我有一个数据框和一个列表,我正在尝试根据列表更新数据框的列。
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行创建零列表。
答案 0 :(得分:0)
尝试
df.loc[df['ID'].isin(zero_list), 'Quantity']=0
df['ID'].isin(zero_list)
与np.where
答案 1 :(得分:0)
听起来像您需要的
df.loc[df['ID'].isin(zero_list),'Quantity']=0
因此,使用loc
来获取ID
中zero_list
列中的值,然后将Quantity
列设为零,
或使用eval
,基本上是一样的事情:
df.loc[df.eval('ID in @zero_list'),'Quantity']=0