为什么pandas在groupby语句中显示删除行?

时间:2017-08-11 11:32:30

标签: python pandas pandas-groupby

我有一个简单的pandas数据帧:

       A     B
0   test  fast
1  train  slow
2   test  fast
3  train  slow

现在我删除列A == test

的行
df2.drop(df2[df2['A'] == 'test'].index, inplace=True)

得到结果:

       A     B
1  train  slow
3  train  slow

现在我运行groupby语句:

df2.groupby('A').B.count()

得到结果:

A
test     0
train    2

为什么我删除了测试输出? 怎么避免这个?

谢谢, 西蒙

1 个答案:

答案 0 :(得分:1)

在您的情况下,A的数据类型为category,请参见下文:

将A转换为类别后,我得到了相同的结果

df.A=df.A.astype('category')
df1=df.drop(df[df['A'] == 'test'].index)
df1.groupby('A').B.count()

A
test     0
train    2
Name: B, dtype: int64

要获得所需的输出,只需将原始df.A转换为string

df.A=df.A.astype('str')
df1=df.drop(df[df['A'] == 'test'].index)
df1.groupby('A').B.count()

Out[201]: 
A
train    2
Name: B, dtype: int64