You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Pandas DataFrame中将单列拆分为多列的技术方案问询

Pandas单列拆分多列的解决方案

步骤1:解析CSV中的列表字符串

CSV里的coords和areas列实际是字符串形式的列表,直接导入后无法直接操作,需要先转换成Python原生列表:

import pandas as pd
import ast

# 导入CSV文件
df = pd.read_csv('your_file.csv')

# 将字符串格式的列表转成真实列表
df['coords'] = df['coords'].apply(ast.literal_eval)
df['areas'] = df['areas'].apply(ast.literal_eval)

步骤2:拆分列表列为多列

利用pd.DataFrame()将列表列直接拆分为多列,再按规则命名:

拆分coords列

# 拆分coords为多列,命名为c1、c2、c3...
coords_split = pd.DataFrame(df['coords'].tolist(), index=df.index)
coords_split.columns = [f'c{i+1}' for i in coords_split.columns]

拆分areas列

# 拆分areas为多列,命名为a1、a2、a3...
areas_split = pd.DataFrame(df['areas'].tolist(), index=df.index)
areas_split.columns = [f'a{i+1}' for i in areas_split.columns]

步骤3:合并所有列

将原file列与拆分后的列合并,系统会自动用NaN填充长度不足的行:

final_df = pd.concat([df['file'], coords_split, areas_split], axis=1)

完整代码示例

import pandas as pd
import ast

# 导入并解析数据
df = pd.read_csv('your_file.csv')
df['coords'] = df['coords'].apply(ast.literal_eval)
df['areas'] = df['areas'].apply(ast.literal_eval)

# 拆分列表列
coords_split = pd.DataFrame(df['coords'].tolist(), index=df.index)
coords_split.columns = [f'c{i+1}' for i in coords_split.columns]

areas_split = pd.DataFrame(df['areas'].tolist(), index=df.index)
areas_split.columns = [f'a{i+1}' for i in areas_split.columns]

# 合并得到最终结果
final_df = pd.concat([df['file'], coords_split, areas_split], axis=1)

print(final_df.head())

关键说明

  • pd.DataFrame(df['列'].tolist())会自动适配不同长度的列表:短列表对应的行在多余列中自动填充NaN,完美解决部分行8组数据、部分行14组数据的场景。
  • 必须先完成字符串到真实列表的转换,否则拆分操作会因数据类型错误失败。

内容的提问来源于stack exchange,提问作者Iuri Sampaio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:23:13