从大熊猫分组中计算值

时间:2018-11-07 09:08:57

标签: python pandas pandas-groupby

我正在尝试弄清楚pandas groupby的使用方法。

我的数据框看起来像这样

index ID Code Quantity
0    400 ZU   5000
1    400 ZO   12
2    401 ZU   9000
3    401 ZO   15
4    402 ZU   1000
5    403 ZO   15

我想对ID和代码进行分组,并创建一个额外的列,该列将ZO的数量除以ZO的数量,但前提是groupby都有两个条目。如果丢失了一个数据,可以将其删除。

我知道我可以对多个列进行分组,例如:

data.groupby(['ID', 'Code'])

但是我不知道如何从那里继续,因为我不需要.sum().mean()求值。

预期输出可能是这样的:

index ID value
0    400 416.17
1    401 600

2 个答案:

答案 0 :(得分:0)

严格来说,您不需要 "seed": { "type": "keyword", "index": "true", "store": true } 。您可以过滤数据框并使用groupby创建两个映射。然后一个除以另一个,并删除空值。

set_index

答案 1 :(得分:0)

pivotdropna一起使用,然后除以div

df1 = df.pivot('ID', 'Code', 'Quantity').dropna()
print (df1)
Code    ZO      ZU
ID                
400   12.0  5000.0
401   15.0  9000.0

df2 = df1['ZU'].div(df1['ZO']).reset_index(name='val')
print (df2)
    ID         val
0  400  416.666667
1  401  600.000000