pandas从同一个数据帧中连接字符串和数字列

时间:2017-04-03 07:59:09

标签: python pandas

我想在数据库中合并两列:

两列是

A
1 
2 
Na
Na

B
Na 
Na 
C
Na

输出

D 
1
2
C 
Na

2 个答案:

答案 0 :(得分:3)

您可以使用combine_firstfillna

df['D'] = df['A'].combine_first(df['B'])

或者:

df['D'] = df['A'].fillna(df['B'])

注意

如果一列是数字而另一列不是,请混合types并且某些功能可能会被破坏。

答案 1 :(得分:3)

使用combine_first

df.A.combine_first(df.B)

考虑数据框df

df = pd.DataFrame(dict(A=[1, 2, np.nan, np.nan], B=[np.nan, np.nan, 'C', np.nan]))

然后

df.A.combine_first(df.B)

0      1
1      2
2      C
3    NaN
Name: A, dtype: object

您可以将其分配到新列'C'

df.assign(C=df.A.combine_first(df.B))

     A    B    C
0  1.0  NaN    1
1  2.0  NaN    2
2  NaN    C    C
3  NaN  NaN  NaN