Python 3.6 Pandas 从某些列中选择所有行

标签 python pandas dataframe numpy

有一个像这样的数据框:

a   b   c   d
1   1   Nan 1
Nan 2   Nan 2  
Nan 3   Nan 3
4   4   4   Nan

我需要从除“с”之外的所有列中获取包含“Nan”的所有行,同时列“с”仍然可见,因此它的内容也很重要。换句话说,输出应该是这样的:

a   b   c   d
Nan 2   Nan 2
Nan 3   Nan 3
4   4   4   Nan

我能够通过将“a、b、d”列中的 Nan 值选择性地替换为“值 1”并将“c”列中的值替换为“值 2”来做到这一点,从而能够按照我的意愿进行过滤。但是一个真正的表包含大约 160 亿个值,所以我认为我的方式不是最好的方式......

最佳答案

尝试将 locdropisnaany 一起使用:

df.loc[df.drop('c', axis=1).isna().any(1)]

输出:

     a    b    c    d
1  NaN  2.0  NaN  2.0
2  NaN  3.0  NaN  3.0
3  4.0  4.0  4.0  NaN

关于Python 3.6 Pandas 从某些列中选择所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68800729/

相关文章:

Python 计算 Dataframe 中的 Null 值和非 Null 值

python - pandas groupby 并仅在每组整列一致时获取值

python - 使用列表索引多索引数据帧

python - 如何根据索引的最大值差异创建新列?

python - 用 pandas 计算每月的支出总额

python - 属性错误 : 'module' object has no attribute 'open'

python - 无法根据规则 ('<M8[ns]' 将数组数据从 dtype ('float64' ) 转换为 dtype 'safe' )

python - 将日期列表和 Country_list 中的不同元素添加到数据帧

python - 缺少值的 DataFrame 列将不接受输入

dataframe - 在带有pyspark的数据帧上使用udf函数的列文字错误