我有一个茶叶出口公司的CSV文件,我已经导入到Jupyter和文件的示例输出如下所示。
Date Type Weight Quantity Price
2016-01-01 black bags 1734136.51 1131.30
2016-01-01 black bulk 10722389.66 510.86
2016-01-01 green 4g_1kg 6817078.01 588.72
2016-01-01 instant 1kg_3kg 86444.50 565.91
2016-01-01 black 3kg_5kg 1003986.73 552.39
我希望在第一列得到一个按每个月分组的输出,然后在下一列输入,然后在下一列输入类别权重,在下一列输入每个数量的总和,就像这样。
YearMonth Type Weight Quantity Price
201601 black bags 17341 1131.30
1kg_3kg 107223 510.86
3kg_5kg 107223 510.86
green bulk 107223 510.86
1kg_3kg 107223 510.86
3kg_5kg 107223 510.86
instant 4g_1kg 6817078.01 588.72
3kg_5kg 107223 510.86
3kg_5kg 107223 510.86
201602 black 1kg_3kg 86444.50 565.91
这是我到目前为止尝试过的代码,但我不知道如何按类型和权重类一起分组。
# to get the date and convert it to YEARMONTH format
data['Date'] = pd.to_datetime(data['Date']).dt.date
data['YearMonth'] = data['Date'].map(lambda date: 100*date.year + date.month)
# calculate the total each month
data = data.groupby(['YearMonth'])['Quantity'].sum().reset_index()
data
它向我展示了这样的东西
YearMonth Quantity
0 201601 23478578.08
1 201602 22988482.20
2 201603 25909619.24
3 201604 21687809.15
4 201605 20776964.81
有没有什么办法可以通过将它们全部分组来实现这一点?
1条答案
按热度按时间hmmo2u0o1#
您可以通过以下方式来完成此操作:
1)创建您的
DataFrame
,我使用了您提供的虚拟数据,但为了查看结果,我更改了2个月:2)使用日期列将
DataFrame.index
转换为datetime
:3)相应地对 Dataframe 进行分组和聚合:
4)将您的
index.names
重命名为正确的名称:结果如下:
我看到您使用了
reset_index
,因此您也可以在此处使用它来获得以下结果:注意,如果不想保留旧索引,可以使用
df.reset_index(drop=True)