【问题标题】:checking dataframe columns (row by row) for multiple conditions in if在 if 中检查多个条件的数据框列(逐行)
【发布时间】:2017-01-12 22:45:57
【问题描述】:
import pandas as pd

df = pd.DataFrame([[1,2,3],[1,5,9],[2,1,5],[9,2,8]], index = [1,2,3], columns = ['A','B','C', 'D'])

假设我有一个像 df 这样的数据框。 我想比较 df 中的所有行 如果 df['A']>df['B'] 和 df['B']df['D'], 那么如果为真 df['E'] = 'yes' 或 'no' 则为假。非常感谢

【问题讨论】:

    标签: pandas if-statement dataframe multiple-conditions


    【解决方案1】:

    您的数据框不可重现,因此请检查错误。我在这里创建了一个有点相似的数据框。

    df = pd.DataFrame({'A': [1,2,10], 'B': [1,5,5], 'C': [2,1,7], 'D': [9,2,4]})
    

    您可以像这样添加列 E:

    df['E'] = (df['A']>df['B']) & (df['B']< df['C']) & (df['B']>df['D'])
    

    它提供所需的输出。

    【讨论】:

    • 谢谢@Vaishali 的回答。对于我的情况,我需要使用 if 语句来执行此操作(以进行更多分析)。当我尝试这个时---import pandas as pd df = pd.DataFrame({'A': [1,2,10], 'B': [1,5,5], 'C': [2,1 ,7], 'D': [9,2,4]}) if (df['A']>df['B']) & (df['B']df['D']): df['E'] = 'yes'--- 它给了我 ValueError: The truth value of a Series is ambiguous.使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。有什么建议吗?
    • 解决方法是不使用if的条件语句。你得到的值错误是因为 df['E'] 是一个熊猫系列,你不能像这样为系列赋值
    • 如果你必须明确使用 if 语句,这里是解决方案,虽然我不推荐它:E = [] for i in range(len(df)): if ((df['A '][i]>df['B'][i]) & (df['B'][i] df['D'][i])): E.append('Yes') else: E.append('No')
    • 非常感谢,这很有道理!
    猜你喜欢
    • 2022-08-09
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 2022-01-23
    • 2022-01-02
    相关资源
    最近更新 更多