首页 > 解决方案 > 将 pandas 数据框列合并为 1 列并忽略 NaN

问题描述

在 python 3.7 和 pandas 1.3.0

如果有一个数据框 df 列 a,b,c

df=pd.DataFrame(
[
{'a':'1'},
{'b':''},
{'c':'3'}
])

尝试使用将 a、b、c 列组合成新的 abc 列

    df['abc'] = df.a.astype(str) + ' ' + df.b.astype(
        str) +  ' ' + df.c.astype(str)

这将使列像

>>> df['abc']
0    1 nan nan
1     nan  nan
2    nan nan 3

无论如何我可以将这 3 列合并为一列,而如果该列为空则不返回任何值?像这样的东西:

>>> df['abc']
0    1
1    
2    3

谢谢!

标签: pythonpandas

解决方案


是的,你可以ffill

s = df.ffill(axis=1).iloc[:,-1]
Out[59]: 
0    1
1     
2    3
Name: c, dtype: object

推荐阅读