如何用Pandas自动命名动态新增的拆分列(前缀+序号)
动态生成列名处理Pandas维度列拆分需求
需求:将示例CSV读取为Pandas DataFrame后,拆分Dimensions列并提取各分段的首个值作为新列,要求自动以data_+序号(如data_0、data_1)的格式命名新增列,无需手动指定列名,适配列数量变化的场景。
示例CSV内容
Name,Dimensions,Color Chair,!12:88:33!!9:10:50!!40:23:11!,Red Table,!9:10:50!!40:23:11!,Brown Couch,!40:23:11!!12:88:33!,Blue
原处理代码(需手动指定列名)
import pandas as pd df = pd.read_csv("./data.csv") df[["first","second","third"]] = (df['Dimensions'] .str.strip('!') .str.split('!{1,}', expand=True) .apply(lambda x: x.str.split(':').str[0])) df = df.drop("Dimensions", axis=1)
修改后的代码(自动生成列名)
import pandas as pd df = pd.read_csv("./data.csv") # 拆分并提取各分段首个值,得到临时DataFrame temp_df = (df['Dimensions'] .str.strip('!') .str.split('!{1,}', expand=True) .apply(lambda x: x.str.split(':').str[0])) # 生成动态列名:data_0、data_1... temp_df.columns = [f'data_{i}' for i in range(temp_df.shape[1])] # 合并临时DataFrame到原数据,删除原Dimensions列 df = pd.concat([df.drop("Dimensions", axis=1), temp_df], axis=1)
代码说明
- 先处理
Dimensions列,拆分后提取首个值得到临时DataFrame,此时列名是默认的0、1、2... - 通过列表推导式生成
data_+序号格式的列名,数量匹配临时DataFrame的列数 - 使用
pd.concat合并原数据(已删除Dimensions列)和临时DataFrame,保证列名自动适配任意数量的拆分结果
内容的提问来源于stack exchange,提问作者user326964
相关产品推荐
相关产品推荐

