首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >连接Python中的字符串,如果存在空字符串,则忽略分隔符

连接Python中的字符串,如果存在空字符串,则忽略分隔符
EN

Stack Overflow用户
提问于 2018-06-08 21:13:30
回答 3查看 101关注 0票数 0

我有一个包含字符串和空白字符串的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' | 

有没有一种方法可以在有空字符串时忽略分隔符来连接这些列?

EN

回答 3

Stack Overflow用户

发布于 2018-06-08 21:15:02

您可以通过dropna删除NaN%s

df.apply(lambda x: ';'.join(x.dropna()), axis=1)
票数 2
EN

Stack Overflow用户

发布于 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
票数 1
EN

Stack Overflow用户

发布于 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50761452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档