【发布时间】:2018-07-05 16:04:12
【问题描述】:
我一直在寻找一种快速有效的方法来替换熊猫数据框给定列中的值,前提是相应的索引属于非连续数字列表。 用 ca 说 non_consecutive_indices_list = [1400, 6571, 14526, 68420, ...]。 30k 个不同的值。
-
我曾尝试使用 .iloc,但收到一条错误消息:
df.iloc[non_consecutive_indices_list, 'column'] = New_Value
ValueError: 只能使用 [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array] 按位置索引。
-
或者,我尝试了以下方法:
df.iloc[non_consecutive_indices_list].column = New_Value
但这会返回原始数据框的副本,因此我无法替换原始值。
-
最后,我尝试使用 for 循环,它可以工作,但效率非常低,并且需要永远替换大约 30k 值:
for i in non_consecutive_indices_list: df.loc[i, 'column'] = New_Value
知道如何以最快的方式完成吗?
【问题讨论】:
-
如何将
iloc更改为loc就像df.loc[non_consecutive_indices_list, 'column'] = New_Value一样? -
这很奇怪,因为在你的情况下你有'listlike of integers'。检查列表,可能你有一些非整数值。
-
谢谢耶兹瑞尔!您刚刚为我节省了未来数小时的修改时间!