【发布时间】:2017-06-14 22:16:21
【问题描述】:
使用类似格式的 csv(总 csv 为 ~500 x ~600,000),因此缺少列:
Sales market_id product_id
0 38 10001516 1132679
1 49 10001516 1138767
2 6 10001516 1132679
... ... ...
9969 245732 1002123 1383020
9970 247093 1006821 1383020
等
并像这样阅读它:
df0=pd.read_csv('all_final_decomps2_small.csv', low_memory=False, encoding='iso8859_15')
我正在尝试为每个 market_id 找到具有最大销售额的 product_id。为此,我需要对销售额求和,因为相同的 product_id 和 market_id 可以出现在多行中。
我已经尝试过这种方法,它会产生每个市场中的产品总和:
df_sales=df0[['Sales','market_id','product_id']]
df_sales.groupby(['market_id', 'product_id'])['Sales'].sum()
照原样(缩短):
market_id product_id
1006174 1132679 2789
1382460 4586
1382691 49
1383020 269138089
1006638 1132679 5143156
1382460 387250
1383020 204456809
10002899 1132679 630
1382464 220
使用:
df_sales.groupby(['market_id', 'product_id'])['Sales'].sum().max()
返回总和的最大值而不是其他值,因此在这种情况下它将返回 269138089。我想返回如下内容:
market_id product_id max_sales
1006174 1383020 269138089
1006638 1383020 204456809
10002899 1132679 630
我已经尝试了很多不同的方法,但我似乎无法为这个示例获得任何帮助,所以我很感激任何帮助(如果以前有人问过它,我很抱歉)。
我正在使用: Python 3.6.1 :: Anaconda 4.4.0(64 位)
【问题讨论】:
标签: python pandas anaconda pandas-groupby