【问题标题】:Merge columns into one column将列合并为一列
【发布时间】:2019-06-08 04:18:21
【问题描述】:

如果三列的值大于 0,我知道它们是相同的。我想知道如何获取每列的非零值并将其合并到一列中

这是示例列:

我期望的是将 3 列合并为一列并获得非零值

输出:

如果该值不为零,则每列上的所有值都相同。任何意见是极大的赞赏。谢谢!

【问题讨论】:

  • df.bfill(axis=1) 将 0 替换为 np.nan
  • 可能是负数吗?如果连续 3 个值都是 0,会发生什么?
  • 不,这是不可能的。另外,我检查了不包括所有零值的行。感谢您的帮助

标签: python pandas


【解决方案1】:

使用max

df['C'] = df[['C1','C2','C3']].max(1)

【讨论】:

    【解决方案2】:

    用途:

    df['C'] = df.replace(0, np.nan).bfill(axis=1).iloc[:, 0].fillna(0)
    

    【讨论】:

      【解决方案3】:
      import pandas as pd
      import numpy as np
      
      df = pd.DataFrame({'C1':[0,15,25],
                         'C2':[1,0,25],
                         'C3':[1,15,25]})
      
      x = np.trim_zeros(np.unique(df.values))
      new_df = pd.DataFrame({'C':x})
      

      【讨论】:

        【解决方案4】:
        import pandas as pd
        import numpy as np
        
        df = pd.DataFrame([[0, 1, 1],[15, 0, 15],[25, 25, 25]])
        df.replace(0, np.nan).mean(axis=1)
        

        或使用

        df.max(axis=1)
        

        【讨论】:

          【解决方案5】:
          In [312]: df.replace(0,np.nan).max(1)
          Out[312]: 
          0     1.0
          1    15.0
          2    25.0
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-05-01
            • 1970-01-01
            • 1970-01-01
            • 2021-07-21
            相关资源
            最近更新 更多