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

循环遍历Pandas DataFrame行,创建唯一命名的数组

解决动态生成对应名称空数组的问题

你伪代码里第6行的问题在于:你先将TotalName赋值为一个字符串(比如Loc152689_005263),紧接着又把它重新赋值为空列表——这只是修改了TotalName这个变量本身的值,并没有创建一个以该字符串为名称的新数组变量。

下面是两种可行的解决方法:

推荐方案:用字典统一存储数组

用字典管理动态生成的数组是最规范的做法,既能避免污染全局命名空间,也方便后续的遍历、查找和维护:

import pandas as pd 
import numpy as np 

# 注意:原代码中`005263`会被Python解析为八进制数(实际值为5263),如果要保留前导零,ColB应使用字符串类型
d = {'ColA':[152689, 221330, 245521], 'ColB':['005263', '135255', '102120'], 'ColC':[132565, 187514, 414141]}
Sample = pd.DataFrame(data=d)

# 初始化字典用于存储所有空数组
arrays_store = {}

# 遍历DataFrame的每一行
for _, row in Sample.iterrows():
    # 按规则生成数组名称
    array_name = f'Loc{row["ColA"]}_{row["ColB"]}'
    # 将空数组存入字典
    arrays_store[array_name] = []

# 调用示例:通过字典键访问对应数组
print(arrays_store['Loc152689_005263'])  # 输出:[]

如果ColB必须使用整数类型,又要保留前导零,可以用str(row["ColB"]).zfill(6)补全为6位字符串:

array_name = f'Loc{row["ColA"]}_{str(row["ColB"]).zfill(6)}'

不推荐方案:动态创建全局变量

虽然可以通过globals()函数直接在全局命名空间创建变量,但这种方式容易引发命名冲突,不利于代码调试和维护,仅作了解:

import pandas as pd 
import numpy as np 

d = {'ColA':[152689, 221330, 245521], 'ColB':['005263', '135255', '102120'], 'ColC':[132565, 187514, 414141]}
Sample = pd.DataFrame(data=d)

for _, row in Sample.iterrows():
    array_name = f'Loc{row["ColA"]}_{row["ColB"]}'
    # 动态创建全局变量
    globals()[array_name] = []

# 直接通过变量名访问
print(Loc152689_005263)  # 输出:[]

内容的提问来源于stack exchange,提问作者Erika H.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:35:22