Python、Pandas和for循环:基于与列表值的匹配填充数据帧行

Python、Pandas和for循环:基于与列表值的匹配填充数据帧行,python,list,pandas,for-loop,Python,List,Pandas,For Loop,我有一个带有“id”列的数据框。我还有一个名为“new_id”的列表,它是在“id”列中找到的值的子集 所以我想在pandas数据框中添加一列,它指示ID是否是新的。我首先将此列初始化为0 df['new_id'] = 0 现在我想循环遍历new_id列表,每当在我的pandas dataframe“id”列中找到该id时,我想将属于该id的行的“new_id”值更改为1。因此,稍后,所有新id将在“new_id”列中为其分配1,所有旧id将保持为0 index = df.index.valu

我有一个带有“id”列的数据框。我还有一个名为“new_id”的列表,它是在“id”列中找到的值的子集

所以我想在pandas数据框中添加一列,它指示ID是否是新的。我首先将此列初始化为0

df['new_id'] = 0
现在我想循环遍历new_id列表,每当在我的pandas dataframe“id”列中找到该id时,我想将属于该id的行的“new_id”值更改为1。因此,稍后,所有新id将在“new_id”列中为其分配1,所有旧id将保持为0

index = df.index.values 

for x in index:
    if new_ids in df.id:
        df.new_id[x] = '1'
        x = x + 1
    else:
        x = x + 1

这不知怎的不起作用,我得到了很多错误。知道我做错了什么吗?非常感谢

实际上,您不需要在DataFrame中手动迭代。熊猫会为你做这项工作。使用内置方法来完成这项工作非常简单和直接

下面是一些示例代码

import pandas as pd
sample = [['a','b','c'],[1,2,3],[4,5,6],['e','f','g']]
df = pd.DataFrame(sample, columns = ['name', 'ids', 'value'])


new_ids = ['b',5]
df['new_id'] = df['ids'].isin(new_ids)

完美的这正是我想要的。非常感谢。:)