我在数据框中有3列:
df:
A |B|C
hi| |dear
为了将它们合并到新的D列中,我这样做了:
df['D'] = [[x, y, z] for x, y, z in zip(df.A, df.B, df.C)]
不幸的是,结果看起来像这样:[hi, ,dear]
。
如何通过本质上删除空值(和关联的逗号),然后将其余的值与空格或破折号相连,将其格式化为[hi dear]
或[hi-dear]
?
感谢您的帮助!
谢谢。
答案 0 :(得分:2)
apply
是一种方便的工具,可将简单功能应用于数据框的所有行。在这里,您可以使用空格字符连接各列,并用单个空格替换任意数量的空格。代码可能是:
import re
blanks = re.compile(' +')
df['D'] = df.apply(lambda x: blanks.sub(' ', ' '.join(x)), axis=1)
df
将如预期的那样:
A B C D
0 hi dear hi dear
答案 1 :(得分:0)
自从标记pandas
df.mask(df=='').stack().groupby(level=0).apply('+'.join).tolist()
['hi+dear']