簡體   English   中英

如何根據熊貓數據框中的非連續索引列表替換值?

[英]How to replace values according to non-consecutive list of indices in pandas dataframe?

我一直在尋找一種快速有效的方法來替換熊貓數據框給定列中的值,前提是相應的索引屬於非連續數字列表。 用ca表示non_consecutive_indices_list = [1400,6571,14526,68420,...] 30k不同的值。

  1. 我嘗試使用.iloc,但收到錯誤消息:

     df.iloc[non_consecutive_indices_list, 'column'] = New_Value 

ValueError:只能按位置使用[整數,整數切片(起始點為INCLUDED,結束點為EXCLUDED),整數形式的列表,布爾數組]進行索引。

  1. 另外,我嘗試了以下方法:

     df.iloc[non_consecutive_indices_list].column = New_Value 

但這會返回原始數據幀的副本,因此我無法替換原始值。

  1. 最后,我嘗試使用一個for循環,該循環可以工作,但是效率非常低,並且要永久替換大約30k的值:

     for i in non_consecutive_indices_list: df.loc[i, 'column'] = New_Value 

知道如何以最快的方式完成此操作嗎?

更改ilocDataFrame.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM