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

如何按索引将单列Pandas DataFrame拆分为姓名、年龄、性别三列

Pandas单列DataFrame拆分三列方案

利用索引实现完全可行,因为你的数据是每3行一组对应姓名、年龄、性别,以下是两种高效实现方法:

方法一:数组重塑(推荐,性能更优)

通过reshape直接将单列数据按固定行数拆分,代码如下:

import pandas as pd

# 假设原DataFrame为df,单列名为'col'
# 示例数据构造(可替换为你的实际数据)
data = ['alex', '7', 'female', 'nora', '3', 'female', 'fred', '15', 'male']
df = pd.DataFrame(data, columns=['col'])

# 按每3行一组重塑为3列
reshaped_data = df['col'].values.reshape(-1, 3)
# 转为DataFrame并指定列名
result_df = pd.DataFrame(reshaped_data, columns=['name', 'age', 'gender'])

# 可选:将age列转换为数值类型(按需使用)
result_df['age'] = pd.to_numeric(result_df['age'])

方法二:按索引分组

利用索引整除3的结果作为分组依据,聚合后拆分列:

# 按索引//3分组,将每组的3个值转为列表后拆分为列
result_df = df.groupby(df.index // 3)['col'].agg(list).apply(pd.Series)
# 重命名列
result_df.columns = ['name', 'age', 'gender']

注意事项

  • 确保原DataFrame的总行数是3的倍数,否则reshape会报错;如果有剩余行,可先处理(如删除或补全)。
  • 若age列需要数值计算,记得用pd.to_numeric转换类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:15:36