Python、Pandas和for循环:基于与列表值的匹配填充数据帧行
我有一个带有“id”列的数据框。我还有一个名为“new_id”的列表,它是在“id”列中找到的值的子集 所以我想在pandas数据框中添加一列,它指示ID是否是新的。我首先将此列初始化为0Python、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
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)
完美的这正是我想要的。非常感谢。:)