gpt4 book ai didi

python-3.x - 如何总结 Pandas 数据框中每行的缺失值

转载 作者:行者123 更新时间:2023-12-05 01:04:49 24 4
gpt4 key购买 nike

我有一个数据框:

import pandas as pd

d = {
'Country': ["Austria", "Austria", "Belgium", "USA", "USA", "USA", "USA"],
'Number2020': [15, None, 18, 20, 22, None, 30],
'Number2021': [20, 25, 18, None, None, None, 32],
}

df = pd.DataFrame(data=d)
df

Country Number2020 Number2021
0 Austria 15.0 20.0
1 Austria NaN 25.0
2 Belgium 18.0 18.0
3 USA 20.0 NaN
4 USA 22.0 NaN
5 USA NaN NaN
6 USA 30.0 32.0

我想总结每个国家的 nan 值。例如

    Country       Count_nans
Austria 1

USA 4

我已经过滤了数据框,只留下带有 nans 的行。

df_nan = df[df.Number2021.isna() | df.Number2020.isna()]

Country Number2020 Number2021
1 Austria NaN 25.0
3 USA 20.0 NaN
4 USA 22.0 NaN
5 USA NaN NaN

所以它看起来像一个 groupby 操作?这个我试过了。

nasum2021 = df_nan['Number2021'].isna().sum()

df_nan['countNames2021'] = df_nan.groupby(['Number2021'])['Number2021'].transform('count').fillna(nasum2021)
df_nan

它给了我 1 nan 代表奥地利,但 3 代表美国,而它应该是 4。所以这是不对的。在我的真实数据框中,我有大约 10 年的时间和大约 30 个国家。谢谢!

最佳答案

处理所有没有Country的列的解决方案-先将其转换为索引,测试缺失值并聚合sum,最后求和列:

s = df.set_index('Country').isna().groupby('Country').sum().sum(axis=1)
print (s)
Country
Austria 1
Belgium 0
USA 4
dtype: int64

如果需要删除 0 值添加 boolean indexing :

s = s[s.ne(0)]

关于python-3.x - 如何总结 Pandas 数据框中每行的缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71393616/

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