簡體   English   中英

根據列表有條件地替換DataFrame列內容

[英]Conditional replace of DataFrame column content based on a list

我有一個數據框和一個列表,並且我試圖根據列表更新數據框的列。

df= pd.DataFrame()
df['ID']=[1,2,3,4,5,6]
df['Quantity']=[100,10,20,30,40,50]
zero_list=[2,3]

我想將“數量”替換為零,以歸零列表中提及的ID。

一種方法是將列表轉換為元組並使用np。在這里我想看看另一種方法,因為從列表到元組的轉換仍然會產生可散列錯誤。

下表來自for循環:

                                   id     Quantity
0                                  []         0
1                                  []         0
2                                  []         0
3                                  []         0
4                                  []         0
5                                  []         0
6                                  []         0
7                                  []         0
8                                  []         0
9                                  []         0
10                                 []         0
11                                 []         0
12                                 []         0
13                                 []         0
14                                 []         0
15              [20529, 25000, 22123]         0
16                                 []         0

我正在從第15行創建零列表

嘗試

df.loc[df['ID'].isin(zero_list), 'Quantity']=0

df['ID'].isin(zero_list)創建了一個掩碼,就像np.where

聽起來您需要:

df.loc[df['ID'].isin(zero_list),'Quantity']=0

因此,使用loc來獲取ID列中zero_list的值,然后將Quantityzero_list零,

或使用eval ,基本上是一樣的:

df.loc[df.eval('ID in @zero_list'),'Quantity']=0

暫無
暫無

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

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