python - 如果数据框中的列值匹配列表更改为另一个值
问题描述
这很简单,但似乎无法让它工作。我有四个列表,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
解决方案
我使用 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 的格式,以便列表中元素的格式与列中元素的格式相同。
推荐阅读
- angular - 将主机操作系统 Nginx 重定向到 Docker Nginx
- reactjs - 每个异步调用响应都应该存储在 redux 存储中吗?
- terraform - Terraform 0.12 模块中的可选资源
- oracle - 字段级别的条件约束
- php - PHP没有写入文件,失败
- ansible - 尝试通过 ansible playbook 配置 UFW 时源地址错误
- android-studio - 在颤振应用程序中集成 srtipe 时出现 Gradle 异常
- javascript - 如何阻止 Tinkerbell 鼠标效果激活水平滚动条并增加页面宽度?
- r - 使用带有日期和格式()的 tidyverse %>% 管道;如何防止 gobbledygook 字符?
- regex - 我需要使用 perl 从字符串中提取一些位于括号之间的值