![](/img/trans.png)
[英]Python - Pandas DF - sum values in a column that match a condition in another column
[英]Python Pandas DataFrame - How to sum values in 1 column based on partial match in another column (date type)?
我在使用 Pandas DataFrame 處理我的數據集時遇到了一些問題。
這是我的數據集:
我的數據類型顯示如下:
我的數據集來自:
MY_DATASET = pd.read_excel(EXCEL_FILE_PATH, index_col = None, na_values = ['NA'], usecols = "A, D")
我想對“日期”列中每個月的“人數”列中的所有值求和。 例如,只要“日期”列中的值為“2020-01”、“2020-02”...
但是,我被卡住了,因為我不確定如何在部分匹配中使用 .groupby。
1) 完成后,我還嘗試將“日期”列中的值從 YYYY-MM-DD 轉換為 YYYY-MMM,例如 2020-Jan。
但是,我不確定是否有這樣的格式。
有誰知道如何解決這些問題?
非常感謝!
查看
s = df['NUMBER OF PEOPLE'].groupby(pd.to_datetime(df['DATE'])).dt.strftime('%Y-%b')).sum()
您可以使用 strftime('%b') 獲得縮寫的月份名稱,但月份名稱將全部為小寫:
df['group_time'] = df.date.apply(lambda x: x.strftime('%Y-%B'))
如果您需要大寫月份的第一個字母,您可以執行以下操作:
df.group_date = df.group_date.apply(lambda x: f'{x[0:5]}{x[5].upper()}{x[6:]}'
# or in one step:
df['group_date']= df.date.apply(lambda x: x.strftime('%Y-%B')).apply(lambda x: f'{x[0:5]}
...: {x[5].upper()}{x[6:]}')
現在你只需要 .groupby 和 .sum():
result = df['NUMBER OF PEOPLE'].groupby(df.group_date).sum()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.