pandas.Series.str.len运行结果与官方文档不符问题排查
问题根本原因
你遇到的现象是split方法默认分隔符规则 + Jupyter展示误导共同导致的,和pandas.Series.str.len的官方实现没有冲突:
1. split操作结果和你预期不一致
pandas的str.split()如果不传入分隔符参数,默认按照任意空白字符分割字符串。你存储的comas列是逗号分隔的字符串,没有任何空白字符,所以分割后每个单元格的结果是长度为1的列表,例如第一个单元格的实际值为['1,2,3'],这就是你调用str.len()返回全1的核心原因。
官方示例中的Series存储的是原生多元素列表[2, 3, 5, 7],所以str.len()会正确返回列表元素的数量4,二者的输入结构本身就不同。
2. Jupyter渲染造成的视觉混淆
Jupyter在展示DataFrame时会自动隐藏列表内字符串元素的引号,导致['1,2,3']会被渲染成[1,2,3],和真正按逗号分割后得到的多元素列表['1','2','3']的展示效果几乎完全一致,进一步误导了你对split结果的判断。
正确实现方式
显式指定分隔符为逗号即可得到你预期的结果:
df3["split"] = df3["comas"].str.split(',')
此时执行df3["split"].str.len()就会返回对应列表的实际长度。
内容的提问来源于stack exchange,提问作者Rodolfo Rasia
相关产品推荐
相关产品推荐

