我有一个包含字符串和空白字符串的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' |
有没有一种方法可以在有空字符串时忽略分隔符来连接这些列?
发布于 2018-06-08 21:15:02
您可以通过dropna
删除NaN
%s
df.apply(lambda x: ';'.join(x.dropna()), axis=1)
发布于 2018-06-08 21:30:49
您可以使用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
发布于 2018-06-09 05:04:50
尝试以下代码:
df.apply(lambda x: ';'.join(x[x!='']), axis=1)
Out:
0 a;b;c
1 c
2 a;c
3 a;b
dtype: object
https://stackoverflow.com/questions/50761452
复制相似问题