我有一个简单的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
为什么我删除了测试输出? 怎么避免这个?
谢谢, 西蒙
答案 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