所以我有这个pandas DataFrame,有5列,像100000行。这是一个例子:
V1 V2 V3 V4 V5
0 2014 Alfa Romeo 159 1 157
1 2014 Alfa Romeo GIULIETTA 1 119
2 2014 Alfa Romeo GIULIETTA 3 119
我想要做的是对V4列中的值求和,V1,V2,V3和V5中的IF值完全相同。
V1 V2 V3 V4 V5
0 2014 Alfa Romeo 159 1 157
1 2014 Alfa Romeo GIULIETTA 4 119
起初我以为groupby会做这个工作,但是当我做的时候
df.groupby(['V1', V2','V3', 'V5' ]).sum()
我在列V3中丢失了一些信息,例如,我应该有10种不同类型的颜色,但现在我只有3种。如何解决这个问题?
我怀疑你正在处理'V1','V2','V3'或'V5'列中的缺失数据,这个数据在groupby中被省略了。看到这个SO Post
解决方法是使用fillna():
df.fillna("Missing").groupby(['V1','V2','V3','V5']).V4.sum()
例:
打印(DF)
V1 V2 V3 V4 V5
0 2014.0 Alfa Romeo 159 1 157
1 2014.0 Alfa Romeo GIULIETTA 1 119
2 2014.0 Alfa Romeo GIULIETTA 3 119
3 NaN Alfa Romeo Black 4 119
df.groupby(['V1','V2','V3','V5']).V4.sum()
缺少'黑':
V1 V2 V3 V5
2014.0 Alfa Romeo 159 157 1
GIULIETTA 119 4
Name: V4, dtype: int64
使用fillna():
df.fillna("Missing").groupby(['V1','V2','V3','V5']).V4.sum()
V1 V2 V3 V5
2014.0 Alfa Romeo 159 157 1
GIULIETTA 119 4
Missing Alfa Romeo Black 119 4
Name: V4, dtype: int64