所以我有这个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种颜色。 怎么解决?
答案 0 :(得分: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()
缺少' Black':
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