[英]Replace list with another list in dataframe based on another column condition
[英]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
的值,然后將Quantity
列zero_list
零,
或使用eval
,基本上是一樣的:
df.loc[df.eval('ID in @zero_list'),'Quantity']=0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.