【问题标题】:How to select cells greater than a value in a multi-index Pandas dataframe?如何在多索引 Pandas 数据框中选择大于某个值的单元格?
【发布时间】:2015-12-20 07:04:08
【问题描述】:

尝试1:

df[ df > 1.0 ] :返回NAN 中的所有单元格。

尝试2:

df.loc[ df > 1.0 ]:这返回了KeyError: 0

df[df['A']> 1.0]:这可行 - 但我想将过滤条件应用于所有列。

【问题讨论】:

  • 您要应用什么过滤条件,df 的示例是什么,您希望输出什么?在对整个 df 进行尝试时,肯定会有一些行只有某些列满足条件(反之亦然),因此对于不满足条件的地方,将其替换为 NaN
  • 您是否尝试选择任何列满足条件的行?还是所有列都满足条件?
  • @AnandSKumar 我想选择任何列满足条件的行。感谢您的提问。

标签: python pandas


【解决方案1】:

如果您要做的是仅选择任何一列满足条件的行,您可以使用DataFrame.any()axis=1(进行逐行分组)。示例 -

In [3]: df
Out[3]:
   A  B  C
0  1  2  3
1  3  4  5
2  3  1  4

In [6]: df[(df <= 2).any(axis=1)]
Out[6]:
   A  B  C
0  1  2  3
2  3  1  4

或者,如果您尝试过滤所有列都满足条件的行,请使用 .all() 代替 .any()all 的示例 -

In [8]: df = pd.DataFrame([[1,2,3],[3,4,5],[3,1,4],[1,2,1]],columns=['A','B','C'])

In [9]: df
Out[9]:
   A  B  C
0  1  2  3
1  3  4  5
2  3  1  4
3  1  2  1

In [11]: df[(df <= 2).all(axis=1)]
Out[11]:
   A  B  C
3  1  2  1

【讨论】:

  • 这并不能回答数据框具有多索引的问题。
猜你喜欢
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-07
  • 2022-01-24
  • 2019-07-06
  • 2020-11-15
  • 1970-01-01
相关资源
最近更新 更多