pandas.Series.str.cat()方法无法为Series最后一个元素添加.NS后缀的问题求助
解决Pandas Series字符串元素批量添加后缀的问题
哦,这个坑我之前踩过!你用的str.cat(sep='.NS ')其实是把Series里的元素用指定分隔符连接起来,而不是给每个元素添加后缀——这就是为什么最后一个元素TCS没有.NS的原因:分隔符只会插在元素与元素之间,不会加到最后一个元素的后面。
正确的解决方法
最直观也最高效的方式是利用Pandas的向量化字符串操作,直接给每个元素拼接后缀:
import pandas as pd asSeries = pd.Series(['HCLTECH', 'ADANIPORTS', 'HDFC', 'TECHM', 'ONGC', 'DIVISLAB', 'TCS']) # 给每个元素添加.NS后缀,得到新的Series asTextWithNS = asSeries + '.NS' print(asTextWithNS)
输出结果会是每个元素都带.NS的Series:
0 HCLTECH.NS 1 ADANIPORTS.NS 2 HDFC.NS 3 TECHM.NS 4 ONGC.NS 5 DIVISLAB.NS 6 TCS.NS dtype: object
如果需要把这些元素连成一个空格分隔的字符串,只需要在拼接后缀后再用str.cat:
# 转换成空格分隔的字符串 asTextWithNS_str = (asSeries + '.NS').str.cat(sep=' ') print(asTextWithNS_str)
最终输出就是你想要的完整结果:
HCLTECH.NS ADANIPORTS.NS HDFC.NS TECHM.NS ONGC.NS DIVISLAB.NS TCS.NS
为什么原来的方法不生效?
再回头看你原来的代码:asSeries.str.cat(sep='.NS '),它的逻辑是把Series里的所有元素,用.NS 作为间隔符拼接成一个字符串。比如三个元素A,B,C,会变成A.NS B.NS C——最后一个元素后面不会再加分隔符,所以自然没有.NS后缀。
其他可选方法
如果你偏好使用str方法,也可以用str.format实现,不过可读性和效率不如直接加法:
# 用str.format的方式添加后缀 asTextWithNS = asSeries.str.format('{}.NS')
内容的提问来源于stack exchange,提问作者Balepur
相关产品推荐
相关产品推荐

