我需要基于dataframe.iat [row,column]读取和更新我的数据单元格值。
我的数据大约33.8万行,因此我需要使用更快的方式(iat)来实现此目标。
我必须使用列的名称,因为它会被另一个循环动态更改
执行代码时,出现以下错误
for i in range(30000):
b = data_jeux.iat[i, 'skill_id_%s' % k]
ValueError: iAt based indexing can only have integer indexers
ps:我已经使用df.get_value()正常工作了,但我必须强制使用.iat
答案 0 :(得分:0)
pd.Index.get_loc
使用熊猫,通常应避免的Python级for
环。但是,假设您必须进行显式迭代,则可以使用get_loc
提取列索引:
col_loc = data_jeux.columns.get_loc
for i in range(30000):
b = data_jeux.iat[i, col_loc(f'skill_id_{k}')]
鉴于您有一个很大的循环,请将data_jeux.columns.get_loc
分配给循环外的变量并使用f字符串可能会带来一些边际性能改进。