Python 如何添加另一个数据帧的索引

Python 如何添加另一个数据帧的索引,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我有两个不同的数据帧。首先,我必须检查df1中的数据是否与df2匹配。如果是这种情况,则添加一列“isRep”=true,否则等于false。它为我创建了一个df3 现在,我需要在我的df3中添加一个“idRep”列,该列对应于索引generate with pandas,在这里可以找到df2中的数据 这是df1: Index Firstname Name Origine 0 Johnny Depp USA 1

我有两个不同的数据帧。首先,我必须检查df1中的数据是否与df2匹配。如果是这种情况,则添加一列“isRep”=true,否则等于false。它为我创建了一个df3

现在,我需要在我的df3中添加一个“idRep”列,该列对应于索引generate with pandas,在这里可以找到df2中的数据

这是df1:

Index      Firstname      Name       Origine
  0        Johnny         Depp       USA
  1        Brad           Pitt       USA
  2        Angelina       Pitt       USA
这是d2:

Index      Firstname      Name       Origine
  0        Kidman         Nicole     AUS
  1        Jean           Dujardin   FR
  2        Brad           Pitt       USA
与此代码合并后:

df = pd.merge(data, dataRep, on=['Firstname', 'Name', 'Origine'], how='left', indicator='IsRep')
df['IsRep'] = np.where(df.IsRep == 'both', True, False)
在这段代码之后,我得到了这个结果,它是我的df3(它与df1相同,但列为“isRep”):

现在,我需要一个名为“idRep”的列的另一个数据帧,我将索引放在与df2类似的列中。但我不知道我该怎么做:

Index      Firstname      Name       Origine   isRep    IdRep
  0        Johnny         Depp       USA       False    -
  1        Brad           Pitt       USA       True     2
  2        Angelina       Pitt       USA       False    -
使用
dict反向查找

我们利用
赋值
依赖顺序的参数的变化

cols = ['Firstname', 'Name', 'Origine']
d = dict(zip(zip(*map(df2.get, cols)), df2.index))
z = [*zip(*map(df1.get, cols))]

df1.assign(
    IdRep=[*map(d.get, z)],
    isRep=lambda d: d.IdRep.notna()
)

有点麻烦的是在合并之前重置索引。仅重置右侧数据帧上的索引



问题/期望的输出是什么?我需要一个新的数据框,列为“IdRep”,就像我解释的最后一个例子一样,这很简单。我喜欢,不客气。请将此答案视为探索性练习。您正确选择了@user3483203的答案(-:
cols = ['Firstname', 'Name', 'Origine']
d = dict(zip(zip(*map(df2.get, cols)), df2.index))
z = [*zip(*map(df1.get, cols))]

df1.assign(
    isRep=[*map(d.__contains__, z)],
    IdRep=[*map(d.get, z)]
)

      Firstname  Name Origine  isRep  IdRep
Index                                      
0        Johnny  Depp     USA  False    NaN
1          Brad  Pitt     USA   True    2.0
2      Angelina  Pitt     USA  False    NaN
cols = ['Firstname', 'Name', 'Origine']
d = dict(zip(zip(*map(df2.get, cols)), df2.index))
z = [*zip(*map(df1.get, cols))]

df1.assign(
    IdRep=[*map(d.get, z)],
    isRep=lambda d: d.IdRep.notna()
)
m = dataRep.rename_axis('IdRep').reset_index()

df = pd.merge(data, m, on=['Firstname', 'Name', 'Origine'], how='left', indicator='IsRep')
df['IsRep'] = np.where(df.IsRep == 'both', True, False)
  Firstname  Name Origine  IdRep  IsRep
0    Johnny  Depp     USA    NaN  False
1      Brad  Pitt     USA    2.0   True
2  Angelina  Pitt     USA    NaN  False