我正在尝试在 pandas DataFrame 中连接多个列,所有字符串;形成一个新的列。我正在使用 .str.cat,以便我可以在列之间包含一个回车符以进行连接。
但是,如果一行中的任何列为空白或 NaN,我会得到 NaN 作为该行的完整结果。
我查看了选项,第三个答案看起来很有趣: pandas combine two strings ignore nan values
但是我看不到将其扩展到 > 2 列的方法,但仍然不是 DataFrame 的所有列,这是必需的。
前两个答案不允许添加回车,这也是必需的。
这是我的代码:
mydf['Address'] = mydf['full name'].str.cat(mydf['Delivery address 1'], sep ='\n').str.cat(mydf['Delivery address 2'], sep ='\n').str.cat(mydf['Delivery city'], sep ='\n').str.cat(mydf['Delivery state'], sep ='\n').str.cat(mydf['Delivery postcode'], sep ='\n')
对于任何字段为空白的任何行,这会导致空白 mydf['Address']。
我的代码或方法有什么错误?
我想你需要apply
使用 axis=1
按行处理 dropna
用于删除 NaN
:
#columns for join
cols = ['full name','Delivery address 1','Delivery address 2',
'Delivery city','Delivery state','Delivery postcode']
mydf['Address'] = mydf[cols].apply(lambda x: '\n'.join(x.dropna()), axis=1)
如果某些列是数字:
mydf['Address'] = mydf[cols].apply(lambda x: '\n'.join(x.dropna().astype(str)), axis=1)
我是一名优秀的程序员,十分优秀!