如何在同一数据框中合并pandas列?

时间:2017-01-06 16:09:47

标签: python python-3.x pandas merge

我有以下pandas数据帧:

    colA        ColB       ColC
0               D
1                           G
2   A       
3               B
4   C

如何将其合并到(*):

    colA
0   D
1   G
2   A
3   B
4   C

到目前为止,我试图:

df = pd.DataFrame.merge([df.ColA, df.ColB, df.ColC], how='right')
df

然而,它没有用。我怎样才能得到(*)?

1 个答案:

答案 0 :(得分:1)

您可以使用DataFrame.sum

df = df.sum(axis=1)

如果NaN值,您可以先fillna

df = df.fillna('').sum(axis=1)

print (df)
0    D
1    G
2    A
3    B
4    C
dtype: object

apply的另一个解决方案 - join

df = df.apply(''.join, axis=1)
#df = df.apply(lambda x: ''.join(x), axis=1)
print (df)
0    D
1    G
2    A
3    B
4    C
dtype: object

使用Series.combine_first的解决方案,但需要NaN值:

print (df)
  colA ColB ColC
0  NaN    D  NaN
1  NaN  NaN    G
2    A  NaN  NaN
3  NaN    B  NaN
4    C  NaN  NaN

df = df.colA.combine_first(df.ColB).combine_first(df.ColC)
print (df)
0    D
1    G
2    A
3    B
4    C
Name: colA, dtype: object