如何从熊猫的下一个单元格中获取价值?

时间:2020-10-15 10:14:31

标签: python pandas dataframe

我有两个数据框。第一个数据框包含一个ID列,第二个数据框包含一个名称列。一个ID可以有多个名称,但是一个名称始终属于一个ID。 我有第二个数据框,其中也有名称列。 我想在第二个数据框中添加一个新列,并将ID与名称匹配。我怎么做? 我知道我创建了一个空列,然后将名称作为输入,在第一个数据框的名称列中进行搜索,如果我有匹配项,则从下一个单元格中获取ID,然后返回该ID,但我无法弄清楚怎么做到的。

3 个答案:

答案 0 :(得分:0)

您可以使用Pandas中的merge函数来执行此操作。有关更多说明,请参见this external page。如果您要合并多个栏,则可以传递一列栏,例如on=['key1', 'key2']

result = pd.merge(df1, df2, on='name')

答案 1 :(得分:0)

我不确定我是否正确理解了您的情况,但是如果您有一个带有ID和Name的表,而第二个仅包含name和其他数据的表,可以这样说:

具有idname的表1:

  • 一个ID可以有多个名字
  • 名称始终属于一个ID

df_name_id

+-----+-----------+
| id  | name      |
+-----+-----------+
| 1   | Arthur    |
| 1   | Brigit    |
| 2   | Christoph |
+-----+-----------+

表2以及其他数据和名称(df_data):

+-------------+-----------+
| Other_data  | name      |
+-------------+-----------+
| 203423      | Arthur    |
| 125323      | Brigit    |
| 125323      | Christoph |
+-------------+-----------+

然后,您可以将name上的两个数据框合并在一起,以将id与数据一起移至第二个数据框:

df_combined = pd.merge(df_data, df_name_id, on='name', how='left')

结果如下:

+-------------+-----------+-------+
| Other_data  | name      |  id   |
+-------------+-----------+-------+
| 203423      | Arthur    |  1    |
| 125323      | Brigit    |  1    |
| 125323      | Christoph |  2    |
+-------------+-----------+-------+

答案 2 :(得分:0)

因此,据我了解,您想在INNER JOIN上使用SECOND_NAME(SQL逻辑)。 pandas带有简洁功能,可让您合并特定列上的数据框: see here 因此,您应该能够使用此功能自动加入数据框。请先尝试一下,如果您仍然遇到困难,我会举一些例子