[英]Pulling multiple, non-consecutive index values from a Pandas DataFrame
[英]How to replace values according to non-consecutive list of indices in pandas dataframe?
我一直在寻找一种快速有效的方法来替换熊猫数据框给定列中的值,前提是相应的索引属于非连续数字列表。 用ca表示non_consecutive_indices_list = [1400,6571,14526,68420,...] 30k不同的值。
我尝试使用.iloc,但收到错误消息:
df.iloc[non_consecutive_indices_list, 'column'] = New_Value
ValueError:只能按位置使用[整数,整数切片(起始点为INCLUDED,结束点为EXCLUDED),整数形式的列表,布尔数组]进行索引。
另外,我尝试了以下方法:
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
到DataFrame.loc
功能:
df = pd.DataFrame({'column':list('abcdefghij')})
non_consecutive_indices_list = [2,4,1,6]
df.loc[non_consecutive_indices_list, 'column'] = 'New_Value'
print (df)
column
0 a
1 New_Value
2 New_Value
3 d
4 New_Value
5 f
6 New_Value
7 h
8 i
9 j
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.