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

时间:2019-05-13 20:16:30

标签: python pandas numpy dataframe

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

现在,我需要在df3中添加一个与索引相对应的“ idRep”列,并使用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”列):

Index      Firstname      Name       Origine   isRep
  0        Johnny         Depp       USA       False
  1        Brad           Pitt       USA       True
  2        Angelina       Pitt       USA       False

现在,我需要另一个名为“ idRep”的数据框,在其中我将索引对应于df2。但是我不知道该怎么做:

Index      Firstname      Name       Origine   isRep    IdRep
  0        Johnny         Depp       USA       False    -
  1        Brad           Pitt       USA       True     2
  2        Angelina       Pitt       USA       False    -

2 个答案:

答案 0 :(得分:2)

在合并之前,要先 reset_index 。仅重置右侧DataFrame上的索引。


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

答案 1 :(得分:1)

使用String urlString = "your_url"; Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(urlString)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setPackage("com.android.chrome"); try { context.startActivity(intent); } catch (ActivityNotFoundException ex) { context.startActivity(intent); } 进行反向查找

dict

我们利用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 自变量依赖于顺序的变化

assign