【问题标题】:Create new Pandas columns based on conditional counts of all other columns根据所有其他列的条件计数创建新的 Pandas 列
【发布时间】:2021-02-26 02:24:00
【问题描述】:

我有一个大约 360 列的 Pandas 数据框。 我想根据在其余列中是否有多少列的值大于 0 的计数向另一个框架添加另一列。我所有列的类型都是 float 64。

如果这是我的原始数据框

column A column B column C ...............Column Z 
0          1.5      6.77                   3.33
3.5        4.5      0                       0  
0           0       0.98                    0
.
.
.
2.35      4.32       0                      9.21 

我想像这样向它添加一列,每行的所有非零列的计数:

column A column B column C ...............Column Z  Column New
0          1.5      6.77                   3.33        3
3.5        4.5      0                       0          2
0           0       0.98                    0          1
.                                                      .
.                                                      .
.                                                      .
2.35      4.32       0                      9.21       3 

如何添加这样的列? 我正在尝试这个,但得到了所有的 NaN。

df['column_new']=df.apply(lambda x: (x > 0).count())

不确定这是否是解决此问题的正确方法。

只是为了说明这就是我的原始数据框中的值的样子。所以我想要一个新列中不为零值的列的计数。

【问题讨论】:

    标签: python pandas dataframe lambda apply


    【解决方案1】:

    你在正确的轨道上。与零的比较返回一系列布尔值,因此您可以求和而不是计数。您也不需要apply 这个,因为您可以比较整个数据框,然后沿正确的轴求和:

    df = df.assign(count_gt_zero=(df > 0).sum(axis='columns'))
    

    【讨论】:

      【解决方案2】:

      gt 的另一个选项:

      df['new_column'] = df.gt(0, axis=1).sum(axis=1)
      

      【讨论】:

        猜你喜欢
        • 2020-04-25
        • 2020-09-24
        • 1970-01-01
        • 2017-08-26
        • 2020-06-02
        • 2021-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多