gpt4 book ai didi

python - 如何从 python groupby 计数中排除 NaN/NaT/None,但包含该行?

转载 作者:太空宇宙 更新时间:2023-11-03 15:35:08 26 4
gpt4 key购买 nike

>> 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')

如果我这样做,该行将被视为具有一个值,确实如此,我明白这一点。我不确定如何将该行包含在总计中,但实际上并未计算 None/NaN/NaT 值?

返回:

    Foo     Total   
0 abc 1
1 abcd 4
2 abcde 2
3 abcdef 1
4 abcdefg 1

预期结果:

    Foo     Total   
0 abc 0
1 abcd 4
2 abcde 2
3 abcdef 1
4 abcdefg 0

最佳答案

您可以先删除空值,然后使用末尾的 Foo 列的唯一值和填充值重新索引。

(df.dropna().groupby('Foo')
.size()
.reindex(df.Foo.unique(), fill_value=0)
.reset_index(name='total'))

或者,您可以将 Foo 列设为 Categorical

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

关于python - 如何从 python groupby 计数中排除 NaN/NaT/None,但包含该行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42585993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com