我有一个包含字符串和空字符串的Pandas DataFrame。
示例数据
col_A | col_B | col_C
----- | ----- | -----
'a' | 'b' | 'c'
| | 'c'
'a' | | 'c'
'a' | 'b' |
我希望以一种忽略分隔符的方式连接列,如果有一个空字符串,我的结果如下所示
| 'a;b;c' |
| 'c' |
| 'a;c' |
| 'a;b' |
我尝试了以下
df.apply(lambda x: ';'.join(x), axis=1)
但我得到了
| 'a;b;c' |
| ';;c' |
| 'a;;c' |
| 'a;b;' |
看看其他似乎是类似问题的帖子我试过
df.apply(lambda x: ';'.join(filter(None,df)), axis=1)
但是这给了我
| 'a;b;c' |
| 'a;b;c' |
| 'a;b;c' |
| 'a;b;c' |
如果有空字符串,是否有办法以忽略分隔符的方式连接列?
答案 0 :(得分:2)
您可以dropna
删除NaN
:
df.apply(lambda x: ';'.join(x.dropna()), axis=1)
答案 1 :(得分:1)
您可以使用str.cat
(它会跳过NaN值。)
#df=df.replace({'':np.nan})
df.apply(lambda x : x.str.cat(sep=';'),1)
Out[113]:
0 a;b;c
1 c
2 a;c
3 a;b
dtype: object
答案 2 :(得分:0)
试试这段代码:
df.apply(lambda x: ';'.join(x[x!='']), axis=1)
Out:
0 a;b;c
1 c
2 a;c
3 a;b
dtype: object