【问题标题】:pandas - select rows where the boolean filtering of a subset of columns are truepandas - 选择列子集的布尔过滤为真的行
【发布时间】:2021-03-22 19:22:23
【问题描述】:

我有一个数据框“df”,我想从中选择 3 个特定列不为空的子集。

到目前为止,我已经尝试应用布尔过滤

mask_df = df[['Empty', 'Peak', 'Full']].notnull()

这给了我以下结果

    Empty   Peak    Full
0   True    False   False
1   False   False   False
2   True    True    True
3   False   False   False
4   False   False   False
... ... ... ...
2775244 True    True    True
2775245 True    True    True
2775246 False   False   False
2775247 False   False   False
2775248 False   False   False

现在我只想选择这 3 列的掩码为 True 的行(即,这 3 列具有空值的行)。如果我用这个掩码过滤原始数据帧“df”,我会得到充满空值的原始数据帧,除了那些 mask_df 为“True”的数据帧。

我可能可以通过逐行应用 lambda 函数来做到这一点,但如果有更简单的方法可以做到这一点,我宁愿避免这种计算。

提前致谢!

【问题讨论】:

  • 请分享一个具有预期输出的示例数据框
  • 是的,请@TiagoPedro

标签: python pandas null


【解决方案1】:

使用pandas.DataFrame.all:

df[mask_df.all(axis = 1)]

【讨论】:

  • 谢谢!这就是我一直在寻找的。​​span>
猜你喜欢
  • 2018-02-08
  • 2019-12-07
  • 2018-06-10
  • 2021-12-01
  • 1970-01-01
  • 2021-09-05
  • 2019-06-18
  • 2019-02-05
  • 2015-05-30
相关资源
最近更新 更多