【发布时间】:2018-05-01 19:30:09
【问题描述】:
我有以下数据框并且想要:
-
month分组记录 - 每个唯一
UPC_ID的QTY_SOLD和NET_AMT总和(每月) - 在结果数据框中也包含其余列
我认为我能做到的方法是第一种:创建一个month 列来聚合D_DATES,然后将QTY_SOLD 与UPC_ID 相加。
脚本:
# Convert date to date time object
df['D_DATE'] = pd.to_datetime(df['D_DATE'])
# Create aggregated months column
df['month'] = df['D_DATE'].apply(dt.date.strftime, args=('%Y.%m',))
# Group by month and sum up quantity sold by UPC_ID
df = df.groupby(['month', 'UPC_ID'])['QTY_SOLD'].sum()
当前数据框:
UPC_ID | UPC_DSC | D_DATE | QTY_SOLD | NET_AMT
----------------------------------------------
111 desc1 2/26/2017 2 10 (2 x $5)
222 desc2 2/26/2017 3 15
333 desc3 2/26/2017 1 4
111 desc1 3/1/2017 1 5
111 desc1 3/3/2017 4 20
期望的输出:
MONTH | UPC_ID | QTY_SOLD | NET_AMT | UPC_DSC
----------------------------------------------
2017-2 111 2 10 etc...
2017-2 222 3 15
2017-2 333 1 4
2017-3 111 5 25
实际输出:
MONTH | UPC_ID
----------------------------------------------
2017-2 111 2
222 3
333 1
2017-3 111 5
...
问题:
- 如何为每一行添加月份?
- 如何包含数据框的其余列?
- 除了
QTY_SOLD之外,还怎么求和NET_AMT?
【问题讨论】:
标签: python pandas dataframe group-by pandas-groupby