我有一个看起来像这样的Pandas数据框:
col1 col2 col3 col4
0 NaN D NaN I
1 NaN NaN F J
2 NaN NaN NaN NaN
3 A E NaN NaN
4 NaN NaN G NaN
5 NaN NaN NaN K
6 B NaN NaN NaN
7 NaN NaN H NaN
8 NaN NaN NaN NaN
9 C NaN NaN NaN
我希望将行至少保留两个非null条目:
col1 col2 col3 col4
0 NaN D NaN I
1 NaN NaN F J
3 A E NaN NaN
使用布尔索引来选择所有非空列确实很容易,但是如何将其归纳以保持行数大于等于x的非空条目呢?
这是创建此数据框的代码:
import numpy as np
import pandas as pd
d = {'col1' : [np.nan, np.nan, np.nan, 'A', np.nan, np.nan, 'B', np.nan, np.nan, 'C'],
'col2' : ['D', np.nan, np.nan, 'E', np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
'col3' : [np.nan, 'F', np.nan, np.nan, 'G', np.nan, np.nan, 'H', np.nan, np.nan],
'col4' : ['I', 'J', np.nan, np.nan, np.nan, 'K', np.nan, np.nan, np.nan, np.nan]}
df = pd.DataFrame(d)
最佳答案
各种选择中的好东西
In [20]: df.dropna(thresh=2)
Out[20]:
col1 col2 col3 col4
0 NaN D NaN I
1 NaN NaN F J
3 A E NaN NaN
这是一个等效的解决方案
df.loc[df.count(axis=1)>=2]
关于python - 根据非空列数从数据框中选择行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25388944/