在存在空或NaN的情况下,将多个数据帧列合并为一列

2024-06-16 11:00:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有列a、B和C的熊猫数据帧。我想把这些列(比如r中的unite in tidyverse)合并成一列D,文本用逗号分隔。所有列都包含一些空值

我做了以下工作:

import pandas as pd
dfm = pd.DataFrame({ 'A': ['apple', '', ''],
                    'B': ['', 'orange', 'grape'],
                     'C': ['pear', 'apple', '']})
dfm['D'] = dfm[['A', 'B', 'C']].apply(lambda x: ','.join(x) if x!='', axis=1)
dfm

我得到的错误如下:

dfm['D'] = dfm[['A', 'B', 'C']].apply(lambda x: ','.join(x) if x!='', axis=1)
                                                                        ^
SyntaxError: invalid syntax

有人知道我做错了什么吗?似乎如果我去掉if x!='',我就可以合并这些列。但是因为有一些空条目,我在它们旁边加了一些逗号,这不是我想要的

有人知道我做错了什么吗?我怎样才能改正?谢谢


Tags: 数据lambdain文本appleifpdunite
2条回答

我想你想要这个:

dfm['D'] = dfm[['A', 'B', 'C']].apply(lambda x: ','.join(a for a in x if a), axis=1)

输出:

       A       B      C             D
0  apple           pear    apple,pear
1         orange  apple  orange,apple
2          grape                grape

我会的

dfm.mask(dfm=='').stack().groupby(level=0).apply(','.join)
0      apple,pear
1    orange,apple
2           grape
dtype: object

相关问题 更多 >