首页 > 解决方案 > 如果数据框中的列值匹配列表更改为另一个值

问题描述

这很简单,但似乎无法让它工作。我有四个列表,w、x、y、z 它们匹配列中的值,将它们更改为另一个值。对于 w 我要 5,对于 x 我要 1,对于 YI 我要 8,对于 ZI 我要 10

w = [6,9,12,30]
x = [4,11,13,14]
Y = [10,16,12,2]
Z = [8,25,24,99]

df:

ID:
6
9
12
30
4 
11
13 
14
10
16
12
2 
8
25
24
99


Wanted output:
5
5
5
5
1
1
1
1
8
8
8
8
10
10
10
10

标签: pythonlistdataframe

解决方案


我使用 np.where 进行这种转换: https ://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html

df['Output'] = np.where(df['ID'].isin(w), 5, 
               np.where(df['ID'].isin(x), 1,
               np.where(df['ID'].isin(y), 8,
               np.where(df['ID'].isin(z), 10,
                  'non-dentified'))))

还请检查列 ID 的格式,以便列表中元素的格式与列中元素的格式相同。


推荐阅读