在列中迭代特定值,如果在新列python中找到,则插入1;如果未找到,则输入0



我有一个DataFrame,如所附图像所示。我感兴趣的列是fgrfgr1。正如您所看到的,它们都包含与年份相对应的值。

我想在这两列中迭代,对于存在的任何值,如果存在值,我想要1,否则0

例如,在fgr中,第一个值是2028。因此,列2028中的第一行将具有值1,并且所有其他列具有值0。

我尝试使用查找,但没有成功。因此,任何指针都会非常有用。

示例数据帧

数据:Excel 中的数据文件

这个填充可以帮你完成任务。你也可以使用for循环,但我认为这种方法会更快。

df["Matched"]=df["fgr"].isin(df["fgr1"](*1

基本上,您检查一个列中的值是否在另一列中,如果是,则得到True或False。然后乘以1得到1和0,而不是True或False。

根据这个答案

不是最有效的,但应该适用于您的情况(如果大型数据集则耗时(

s = df.reset_index().melt(['index','fgr','fgr1'])
s['value'] = s.variable.eq(s.fgr.str[:4]).astype(int)
s['value2'] = s.variable.eq(s.fgr1.str[:4]).astype(int)
s['final'] = np.where(s['value']+s['value2'] > 0,1,0)
yourdf = s.pivot_table(index=['index','fgr','fgr1'],columns = 'variable',values='final',aggfunc='first').reset_index(level=[1,2])
yourdf

最新更新