如何在DataFrame中基于数组名前4位生成列名并新增列
DataFrame按规则动态生成列名新增列的实现方法
核心逻辑分为两步:首先按照「提取数组名称前4个字符、拼接_prop后缀」的规则生成目标列名,再将数组内容赋值给DataFrame的对应列即可,以下是两种可靠性最高的实现方式:
单个数组处理场景
直接显式传入数组名字符串生成列名即可,不会出现变量名匹配错误的问题,示例代码:import pandas as pd # 测试数据 df = pd.DataFrame({"user_id": [1, 2, 3], "score": [88, 76, 92]}) customer = [0.72, 0.34, 0.91] # 名为customer的目标数组 # 按规则生成列名 array_name = "customer" target_col = f"{array_name[:4]}_prop" # 新增列 df[target_col] = customer执行后DataFrame会新增名为
cust_prop的列,完全匹配需求规则。多数组批量处理场景
如果需要同时处理多个数组、批量生成对应列,建议先将所有待处理数组以「数组名: 数组内容」的键值对格式存入字典,遍历字典完成批量赋值,减少重复代码,示例代码:# 汇总所有待处理数组 array_map = { "customer": [0.72, 0.34, 0.91], "product": [199, 329, 89], "merchant": [4.7, 4.2, 4.9] } # 遍历批量新增列 for arr_name, arr_content in array_map.items(): col_name = f"{arr_name[:4]}_prop" df[col_name] = arr_content执行后会自动生成
cust_prop、prod_prop、merc_prop三个符合命名规则的新列。
避坑提示:不要通过读取Python全局/局部作用域变量的方式自动抓取数组名,这类方法容易匹配到同名的无关变量,运行稳定性差,优先选择上述两种显式传参的实现方式,可控性更高。
内容的提问来源于stack exchange,提问作者Ashish
相关产品推荐
相关产品推荐

