【发布时间】:2023-01-30 21:21:44
【问题描述】:
我正在尝试将数据框中的多个列合并到同一数据框中的新列中。这些列可以有一个字符串值或者是 Na 或 NaN。每当一列是 Na/NaN 时,我希望这些列不包含在最终字符串中。
例如。
a b c d RESULT
0 AA BB CC DD AA;BB;CC;DD
1 ab Na cd da ab;cd;da
2 Na xx Na Na xx
3 Na Na Na Na Na
我已经测试了多个功能。
-
df['RESULT'] = df['a'] + ";" + df['b'] + ...不起作用,因为它仍然会嵌套 Na。 -
df['RESULT'] = ";".join(df['a'],df['b],...)不起作用,因为 join 只需要一个参数(我有 4 个) -
df['RESULTS'] = [f"{a};{b};{c}" for a,b,c in zip(df['a'],df['b'], df['b'])]不起作用,因为它将 Na 的字符串添加到输出中 - Pandas str.cat():
df['fill_name']= df['RESULTS'].str.cat(df['a'],sep=";").str.cat(df['b'],sep=";")...是最接近我要找的,但是只要一列中有一个 Na,整个输出就是 Na。最后我正在研究类似"TEXTJOIN" function in Excel.的东西
提前谢谢了!
【问题讨论】:
标签: python pandas dataframe join concatenation