【问题标题】:Pandas identifying if any element is in a row熊猫识别是否有任何元素在一行中
【发布时间】:2020-07-22 22:00:56
【问题描述】:

我有一个数据框,它是单行数值,我想知道这些值是否大于 2,如果是,则创建一个带有单词“Diff”的新列

    Col_,F_1,F_2
    1,5,0

我的数据框是 diff_df。这是我尝试过的一件事

    c = diff_df >2
    if c.any():
        diff_df['difference']='Difference'

如果我要打印 c。会是

    Col_,F_1,F_2
    False,True,False 

我已经尝试过 c.all() 和许多其他东西的迭代。显然,我的经验不足让我退缩了,谷歌在这方面没有帮助。我尝试的一切都是“一个系列(或数据框)的真值是模棱两可的使用 a.any(), a.all()....”任何帮助将不胜感激。

【问题讨论】:

    标签: pandas boolean


    【解决方案1】:

    由于只有一行,所以取数据框的.max().max()。使用一个.max(),您将获得每一列的.max()。第二个.max() 取所有列的最大值。

    if diff_df.max().max() > 2: diff_df['difference']='Difference'
    

    输出:

        Col_ F_1 F_2 difference
    0   1    5   0   Difference
    

    【讨论】:

      【解决方案2】:

      使用.loc 访问器和.gt() 进行查询,同时创建新列并填充它

      df.loc[df.gt(2).any(1), "difference"] = 'Difference'
      
            Col_  F_1  F_2      difference
       0       1    5    0     Difference
      

      【讨论】:

        【解决方案3】:

        除了大卫的回复你也可以试试这个:

        if ((df > 2).astype(int)).sum(axis=1).values[0] == 1:
            df['difference']='Difference'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-06-12
          • 1970-01-01
          • 2015-05-28
          • 1970-01-01
          • 1970-01-01
          • 2021-06-04
          • 2013-10-09
          相关资源
          最近更新 更多