从Pandas DataFrame集合列提取字符串:异常原因及正确实现方法
问题分析与解决方案
异常原因
你的letters列存储的是Python集合对象,并非字符串类型。直接调用str方法时,Pandas会把整个letters列的字符串表示(所有行集合的文本拼接结果)赋值给每一行,导致所有行重复显示整个列的内容,这就是你看到的异常输出。
正确实现方法
要提取集合里的单个字符并生成string类型的comm列,因为每个集合仅包含一个元素,有两种简单可行的方法:
方法1:使用apply提取集合元素
利用apply遍历每个集合,取其中唯一的元素,再转成string类型:
import pandas as pd # 示例DataFrame(模拟你的数据) df = pd.DataFrame({'letters': [{'s'}, {'B'}, {'m'}, {'H'}, {'b'}]}) # 生成comm列 df['comm'] = df['letters'].apply(lambda x: next(iter(x))).astype('string')
方法2:转成列表后提取元素
如果集合转成列表更直观,也可以这么写:
df['comm'] = df['letters'].apply(lambda x: list(x)[0]).astype('string')
执行后comm列的输出符合要求,且数据类型为string:
0 s 1 B 2 m 3 H 4 b Name: comm, dtype: string
内容的提问来源于stack exchange,提问作者pallab bhattacharya
相关产品推荐
相关产品推荐

