如何按索引将单列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
相关产品推荐
相关产品推荐

