import pandas as pd
import numpy as np
我有一個數據幀:熊貓:應用價值的索引列表,數據幀
my_df = pd.DataFrame({'target': [0 ,0 ,0 ,0 , 300, 400, 500, 600, 0],
'class' : [0 ,0 ,0 ,0 , 1, 1, 1, 1, 0],
'feature':[12 ,13 ,13 ,200 , 900, 800, 600, 600, 12]})
而且我已經在此產生索引集更新的過程,表示無論是作爲一對列表:
update_index = [0 , 1, 2, 3, 8]
update_values = [20, 25, 25, 150, 25]
或者,我可以表達這些元組的列表:
update_tuples = [(0,20), (1,25), (2,25), (3,150), (8,25)]
或理想,我希望能夠表達他們作爲一對numpy的陣列 - 因爲這是更可能是我將在生成它們的形式
update_index_array = np.array([0 , 1, 2, 3, 8])
update_values_array = np.array([20, 25, 25, 150, 25])
表達選項之外,我發現了一種方法,用我的值集中的值更新我的數據框,在我的索引集中指定的位置,這種方法很有效,但它有點慢(而且很醜!)。
[my_df.set_value(i,'target',v) for i,v in update_tuples]
這是一個問題,因爲在我的現實生活中,我有數千(數百萬?)的更新要執行。
我想找到的是某種numpy加速的單次更新(即沒有列表理解),它將更新轉換爲適當的目標位置,而不會覆蓋非索引中的現有值位置。
有什麼想法嗎?
只是門票,三江源 - 是的,我有種直覺地感到列表理解是不正確的方式去。你的解釋有助於把這種直覺背後的背景,所以謝謝你。 –