【问题标题】:How to obtain columns for rows with values greater than zero in python [duplicate]如何在python中获取值大于零的行的列[重复]
【发布时间】:2021-12-26 21:09:33
【问题描述】:

假设我们有一个数据框,其中包含每个 user_id(列中)的以下频率:

   1922 7   233 439  662
 0  0   2    3   0    2
 1  1   0    0   1    1
 2  1   0    4   0    0

如何获得对应于具有非零值的行的列,如下所示:

     Non_zeros
  0  7, 234, 662
  1  1992, 432, 662
  2  1992, 234

【问题讨论】:

    标签: python pandas numpy matrix


    【解决方案1】:

    你的情况是dot

    df['new'] = df.ne(0).dot(df.columns+',').str[:-1]
    Out[98]: 
    0       7,233,662
    1    1922,439,662
    2        1922,233
    dtype: object
    

    【讨论】:

      【解决方案2】:
      df =  pd.DataFrame({1922: [0, 1, 1], 7: [2, 0, 0], 233: [3, 0, 4], 439: [0, 1, 0], 662: [2, 1, 0]})    
      df.apply(lambda x: list(df.columns[x!=0]), axis=1)
      

      会给你

      0       [7, 233, 662]
      1    [1922, 439, 662]
      2         [1922, 233]
      

      【讨论】:

      • 我认为您指定 'x' 的方式有误,对于非零值@Ted 应该是 '[x!=0]'
      • 是的,我最初有一个错字 - 现在已修复!
      猜你喜欢
      • 2020-09-18
      • 2020-11-01
      • 1970-01-01
      • 2021-11-04
      • 2020-12-08
      • 2019-03-25
      • 2017-11-02
      • 2021-10-18
      • 2019-03-30
      相关资源
      最近更新 更多