簡體   English   中英

對熊貓DataFrame進行矢量化更新?

[英]Vectorized update to pandas DataFrame?

我有一個數據框,我想使用數組中的某些值更新列。 數組的長度與數據幀的長度不同,但是我有要更新的數據幀行的索引。

我可以通過下面的行循環來做到這一點,但是我希望有一種更有效的方法可以通過矢量化方法來做到這一點,但是我似乎無法正確理解語法。

在下面的示例中,我只用nan填充列,然后直接通過循環使用索引。

df['newcol'] = np.nan

j = 0
for i in update_idx:
    df['newcol'][i] = new_values[j]
    j+=1

如果已經有了索引列表,則可以使用loc來執行標簽(行)選擇,可以傳遞新的列名,在未選擇現有行的情況下,這些行將被分配NaN

df.loc[update_idx, 'new_col'] = new_value

例:

In [4]:
df = pd.DataFrame({'a':np.arange(5), 'b':np.random.randn(5)}, index = list('abcde'))
df

Out[4]:
   a         b
a  0  1.800300
b  1  0.351843
c  2  0.278122
d  3  1.387417
e  4  1.202503

In [5]:    
idx_list = ['b','d','e']
df.loc[idx_list, 'c'] = np.arange(3)
df

Out[5]:
   a         b   c
a  0  1.800300 NaN
b  1  0.351843   0
c  2  0.278122 NaN
d  3  1.387417   1
e  4  1.202503   2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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