如何从python groupby计数中排除NaN/NaT/None,但包括行?
如果我这样做的话,该行将被计算为有一个值,我理解这一点。我不确定如何将该行包括在总数中,但不实际计算None/NaN/NaT值 返回:如何从python groupby计数中排除NaN/NaT/None,但包括行?,python,python-2.7,pandas,Python,Python 2.7,Pandas,如果我这样做的话,该行将被计算为有一个值,我理解这一点。我不确定如何将该行包括在总数中,但不实际计算None/NaN/NaT值 返回: >> df Foo Bar Number Date 0 abc None NaN NaT 1 abcdefg None NaN NaT 2 abcd this 1111222 3/8/2017 3 abcd that 1233336 3/3/201
>> df
Foo Bar Number Date
0 abc None NaN NaT
1 abcdefg None NaN NaT
2 abcd this 1111222 3/8/2017
3 abcd that 1233336 3/3/2017
4 abcd what 1346554 3/3/2017
5 abcde that 8889995 3/9/2017
6 abcde this 1849552 3/8/2017
7 abcd that 7418652 3/3/2017
8 abcdef this 4865154 3/7/2017
>> df.groupby(['Foo']).size().reset_index(name='Total')
预期结果:
Foo Total
0 abc 1
1 abcd 4
2 abcde 2
3 abcdef 1
4 abcdefg 1
您可以先删除空值,然后使用
Foo
列的唯一值重新索引,最后使用填充值
Foo Total
0 abc 0
1 abcd 4
2 abcde 2
3 abcdef 1
4 abcdefg 0
或者,您也可以将您的Foo
列
演示
df.Foo = pd.Categorical(df.Foo)
df.dropna().groupby('Foo').size().reset_index(name='total')
就这样,谢谢!!我还没有用过Category,但现在将检查它。
df.Foo = pd.Categorical(df.Foo)
df.dropna().groupby('Foo').size().reset_index(name='total')
>>> (df.dropna().groupby('Foo')
.size()
.reindex(df.Foo.unique(), fill_value=0)
.reset_index(name='total'))
Foo total
0 abc 0
1 abcdefg 0
2 abcd 4
3 abcde 2
4 abcdef 1
############################################################################
>>> df.Foo = pd.Categorical(df.Foo)
>>> df.dropna().groupby('Foo').size().reset_index(name='total')
Foo total
0 abc 0
1 abcd 4
2 abcde 2
3 abcdef 1
4 abcdefg 0