【问题标题】:How merge two columns into one column in pandas?如何在熊猫中将两列合并为一列?
【发布时间】:2020-05-28 16:50:17
【问题描述】:

基本上,我有两列要按照某些规则合并在一起。使用以下代码,我构建了一个类似的数据框。

primaryColumn = pd.Series(["Orange", np.nan, np.nan, "Cyan"])
secondaryColumn = pd.Series(["Red", "Green", np.nan, "Blue"])

pd.concat([secondaryColumn, primaryColumn], axis=1)

我基本上想保留第 1 列中的所有内容,将第 0 列中的所有内容带入以替换任何 nan 值,然后保留两列中的任何 nan 值。它应该产生一个包含这些值的列:

0 橙色 1 绿色 2 钠 3 青色

我尝试过合并和连接,但当然大多数功能是用于将数据框放在一起,而不是列。

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    这更像fillna

    s=primaryColumn.fillna(secondaryColumn)
    s
    0    Orange
    1     Green
    2       NaN
    3      Cyan
    dtype: object
    

    【讨论】:

      【解决方案2】:

      试试这个...

      df.loc[df['1'].isnull(),'1'] = df['0']
      

      【讨论】:

        【解决方案3】:

        fill forward 在列轴上

        df.ffill(axis=1)
        
             0        1
        0   Red     Orange
        1   Green   Green
        2    NaN    NaN
        3   Blue    Cyan
        

        【讨论】:

          【解决方案4】:

          假设您已将 2 个源 系列 连接到 一个DataFrame,你有:

                 0       1
          0    Red  Orange
          1  Green     NaN
          2    NaN     NaN
          3   Blue    Cyan
          

          要生成第三列,定义一个函数来获取 行中的最后一个有效值或 NaN

          def lastValid(row):
              ind = row[::-1].first_valid_index()
              return row[ind] if pd.notnull(ind) else np.nan
          

          然后应用此函数,将结果保存在新列中:

          df[2] = df.apply(lastValid, axis=1)
          

          结果是:

                 0       1       2
          0    Red  Orange  Orange
          1  Green     NaN   Green
          2    NaN     NaN     NaN
          3   Blue    Cyan    Cyan
          

          或者如果你想覆盖 1 列,而不是创建新列, 将 2 更改为 1

          当您有更多源列时,它也可以工作,这是唯一的详细信息 取输出列的正确名称。

          【讨论】:

            猜你喜欢
            • 2020-03-05
            • 2017-05-28
            • 2019-05-14
            • 1970-01-01
            • 2023-03-16
            • 2019-10-21
            • 1970-01-01
            • 2017-09-19
            • 2014-10-20
            相关资源
            最近更新 更多