如何拆分DataFrame中dtype为Object且存列表格式字符串的列?
把字符串格式的列表列拆分为两列的方法
方法一:用ast.literal_eval解析(推荐)
这种方法能安全地把字符串形式的列表转换成真实的Python列表,适配各种规范的列表字符串格式。
- 导入
ast模块,用它的literal_eval方法解析teams列的每个字符串 - 把解析后的列表展开成两列
示例代码:
import ast import pandas as pd # 示例数据 df = pd.DataFrame({'teams': ["['Australia', 'Sri Lanka']", "['India', 'England']"]}) # 将字符串转为列表 df['teams_list'] = df['teams'].apply(ast.literal_eval) # 拆分列表为两列 df[['team1', 'team2']] = pd.DataFrame(df['teams_list'].tolist(), index=df.index) # 可选:删除中间生成的teams_list列 df = df.drop('teams_list', axis=1)
方法二:直接字符串拆分(仅适合格式完全固定的场景)
如果你的teams列字符串格式完全统一(比如都是['队名1', '队名2']),可以用字符串操作拆分,但容错性差,格式稍有变化就会出错。
示例代码:
import pandas as pd df = pd.DataFrame({'teams': ["['Australia', 'Sri Lanka']", "['India', 'England']"]}) # 去掉首尾的[],再按"', '"拆分 df[['team1', 'team2']] = df['teams'].str.strip("[]").str.split("', '", expand=True) # 清理队名前后的单引号 df['team1'] = df['team1'].str.strip("'") df['team2'] = df['team2'].str.strip("'")
内容的提问来源于stack exchange,提问作者Sandeep Illuri
相关产品推荐
相关产品推荐

