如何获取 Pandas 数据框中每一行中缺失值的数量。我想将数据框拆分为不同的数据框,这些数据框在每行中具有相同数量的缺失值。
有什么建议吗?
如何获取 Pandas 数据框中每一行中缺失值的数量。我想将数据框拆分为不同的数据框,这些数据框在每行中具有相同数量的缺失值。
有什么建议吗?
在使用 pandas 时,尽量避免在循环中执行操作,包括apply
,map
等applymap
。那很慢!
DataFrame 对象有两个轴:“axis 0”和“axis 1”。“axis 0”代表行,“axis 1”代表列。
如果要计算每列中的缺失值,请尝试:
df.isnull().sum()
默认或df.isnull().sum(axis=0)
另一方面,您可以通过以下方式计算每一行(这是您的问题):
df.isnull().sum(axis=1)
它比 Jan van der Vegt 的解决方案快大约 10 倍(顺便说一句,他计算的是有效值,而不是缺失值):
In [18]: %timeit -n 1000 df.apply(lambda x: x.count(), axis=1)
1000 loops, best of 3: 3.31 ms per loop
In [19]: %timeit -n 1000 df.isnull().sum(axis=1)
1000 loops, best of 3: 329 µs per loop
您可以像这样对行应用计数:
test_df.apply(lambda x: x.count(), axis=1)
测试_df:
A B C
0: 1 1 3
1: 2 nan nan
2: nan nan nan
输出:
0: 3
1: 1
2: 0
您可以将结果添加为这样的列:
test_df['full_count'] = test_df.apply(lambda x: x.count(), axis=1)
结果:
A B C full_count
0: 1 1 3 3
1: 2 nan nan 1
2: nan nan nan 0
最简单的方法:
df.isnull().sum(axis=1)
或者,您可以简单地使用数据框对象的 info 方法:
df.info()
它为每列提供非空值的计数。