首页 > 解决方案 > 根据列表替换pandas df中值的最佳方法

问题描述

我有一个 DF:

NAME  V ID
name1 0 424
name2 0 123
name3 1 241

并列出:

list1 = ['name1', 'name4']

如果名称在列表中,我如何以最佳方式将 df 中的 V 替换为 1。示例输出:

NAME  V ID
name1 1 424
name2 0 123
name3 1 241

我尝试在 for 循环中执行此操作,但对于具有 60k+ 记录的 df 来说,这不是最佳方式,因此我尝试找到另一个选项,我发现了类似这样的内容:

df.NAME[[x for x in range(len(df)) if x in list1]] = 1

但我认为这不是最好的方法,因为它仍然是 for 循环。

标签: pythonpandas

解决方案


我会用,顺便说一句,不要把你的名字命名list'list'

df.loc[df.NAME.isin(['name1', 'name4']),'V']=1
df
    NAME  V   ID
0  name1  1  424
1  name2  0  123
2  name3  1  241

推荐阅读