如何访问Pandas DataFrame中拆分生成的列表元素?
解决方法
你遇到的问题是因为df['Correspondant Split']是pandas的Series对象,直接用[-1]或[1]是取Series的行数据,而非每行列表里的元素。以下是两种可行方案:
方案1:拆分时直接展开为多列
不用先生成列表列,拆分时直接把每个元素拆成单独的列,一步到位:
# 按空格拆分,expand=True会自动把列表元素展开为多列 df[['头衔', '名字', '姓氏']] = df['Correspondant'].str.split(' ', expand=True)
这样直接得到三列,分别对应"Mr"、"Michel"、"DURAND",后续直接操作这些列即可。
方案2:从已有的列表列提取元素
如果已经生成了Correspondant Split列,要用.str[]来访问每行列表的特定位置元素(索引从0开始):
- 提取第一个元素(头衔):
df['头衔'] = df['Correspondant Split'].str[0] - 提取第二个元素(名字):
df['名字'] = df['Correspondant Split'].str[1] - 提取最后一个元素(姓氏):
df['姓氏'] = df['Correspondant Split'].str[-1]
注意事项
如果部分行的文本拆分后列表长度不一致,上述两种方法都会在缺失位置填充NaN,可以根据实际数据用fillna()或其他方法处理缺失值。
内容的提问来源于stack exchange,提问作者FBAB
相关产品推荐
相关产品推荐

