【问题标题】:Count of columns which as some value in pandas dataframe在熊猫数据框中作为某些值的列数
【发布时间】:2023-03-14 00:31:02
【问题描述】:

根据其他列中字符串的长度导出一个新的pandas列

我想计算每行中具有值的列数,并使用该数字创建一个新列。假设如果我有 3 列并且两列有一些值,那么该行的新列将具有值 2。

df = pd.DataFrame({'ID':['1','2','3'], 'J1': ['a','ab',''],'J2':['22','','33']})
print df

输出应该是这样的:

  ID  J1  J2 Count_of_cols_have_values 
0  1   a  22  2
1  2  ab      1 
2  3      33  1

【问题讨论】:

    标签: python pandas lambda multiple-columns


    【解决方案1】:

    一种方法是检查哪些单元格不等于 (DataFrame.ne) 为空字符串,然后沿行取总和:

    df['Count_of_cols_have_values '] = df.set_index('ID').ne('').sum(1).values
    
      ID  J1  J2   Count_of_cols_have_values 
    0  1   a  22                           2
    1  2  ab                               1
    2  3      33                           1
    

    或者您也可以将replace 与NaNs 和count 一起返回non_NA 值的数量:

    df['Count_of_cols_have_values '] = df.set_index('ID').replace('',np.nan).count(1).values
    
      ID  J1  J2   Count_of_cols_have_values 
    0  1   a  22                           2
    1  2  ab                               1
    2  3      33                           1
    

    【讨论】:

    • 计数错误,我都试过了
    • 计数为 2,1,1
    • 以您的方式生成数据框,在这两种情况下都能得到正确的结果
    • 第二种方法有错误@mohan111现在试试
    • 是的@yatu 现在问题已得到纠正,输出完美..从我这边投票..
    猜你喜欢
    • 2016-08-02
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    相关资源
    最近更新 更多