【问题标题】:IF statement error with checking column condition检查列条件的 IF 语句错误
【发布时间】:2021-09-29 19:54:27
【问题描述】:

我在下面有一个数据框,想在特定条件下逐列检查每个数字。

import pandas as pd
df = pd.DataFrame([[10,3,1], [3,7,2], [2,4,4]], columns=list("ABC"))

如果列中的任何一个单元格按列满足特定条件。然后我会相应地执行一些代码。

if (df['A'] > 8) | (df['B'] > 6) | (df['C'] > 5):
   print(df.loc[: 'A']) #print function here is just an example

错误信息说:

alueError: Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

如何解决我的 IF 语句来执行打印代码?

【问题讨论】:

  • (df['A'] > 8) | (df['B'] > 6) | (df['C'] > 5) 是一个类似[True, True, False] 的系列。所以没有一个真值/假值,这就是为什么它是模棱两可的。你想要 True 如果所有这些都应该是真的 ((df['A'] > 8) | (df['B'] > 6) | (df['C'] > 5)).all() 或者 True 是至少其中一个是真的像((df['A'] > 8) | (df['B'] > 6) | (df['C'] > 5)).any()
  • 感谢您的详细解释。我将使用 .any() 来解决我的问题。

标签: python dataframe if-statement conditional-statements


【解决方案1】:
if any((df['A'] > 8) | (df['B'] > 6) | (df['C'] < 2)):
   print(df.loc[:, 'A']) #print function here is just an example

就像您的错误点一样,在您的情况下使用 any(iterable)(iterable).any() 来测试多个真/假语句

附:另外,您在df.loc[:, 'A'] 中缺少逗号

【讨论】:

  • 非常感谢!现在我学习“任何(可迭代)”来适应我的情况。并感谢指出我遗漏逗号的错误。
猜你喜欢
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多