为了账号安全,请及时绑定邮箱和手机立即绑定

加入两个带有 NA 的 pandas 系列文本

加入两个带有 NA 的 pandas 系列文本

神不在的星期二 2022-10-06 20:05:03
我有两个带有文本的熊猫系列,我想加入它们以获得带有连接文本的系列。两个系列都基于相同的索引,但一个系列的值较少,这会在加入时导致 NA 值。这是一个玩具示例:import pandas as pds1 = pd.Series(['red', 'blue', 'green', 'black'], index=[1,2,3,4])s2 = pd.Series(['large', 'small'], index=[1,3])s1    1      red    2     blue    3    green    4    black    dtype: objects2    1    large    3    small    dtype: object现在我想用分隔符加入两个系列的文本以获得以下系列:1      red,large2           blue3    green,small4          black这就是我到目前为止所尝试的:1.s1.str.cat(s2, sep=',')1      red,large2            NaN3    green,small4            NaNdtype: objectNaN 值而不是第一个系列的值2.s1.str.cat(s2, sep=',', na_rep='')1      red,large2          blue,3    green,small4         black,dtype: object尾随逗号3.s1.str.cat(s2, sep=',', na_rep='').str.strip(',')这实际上有效,但它使代码更难理解,我不想使用任何额外的代码来修复应该首先正确完成的事情!4.pd.concat([s1,s2], axis=1).apply(','.join)TypeError: sequence item 1: expected str instance, float found5.pd.concat([s1,s2], axis=1).agg('|'.join, axis=1)TypeError: sequence item 1: expected str instance, float found由于 NA 值而不起作用。那么我怎样才能做到这一点呢?
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

另外的选择


s1.append(s2).groupby(level=0).agg(','.join)

1      red,large

2           blue

3    green,small

4          black

dtype: object


查看完整回答
反对 回复 2022-10-06
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

一种解决方法可能是在s2之前添加逗号,然后cat使用s1和na_rep=''喜欢:


print (s1.str.cat(',' + s2, na_rep=''))

1      red,large

2           blue

3    green,small

4          black

dtype: object


查看完整回答
反对 回复 2022-10-06
  • 2 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信