我有两个数据框。第一个数据框包含一个ID列,第二个数据框包含一个名称列。一个ID可以有多个名称,但是一个名称始终属于一个ID。 我有第二个数据框,其中也有名称列。 我想在第二个数据框中添加一个新列,并将ID与名称匹配。我怎么做? 我知道我创建了一个空列,然后将名称作为输入,在第一个数据框的名称列中进行搜索,如果我有匹配项,则从下一个单元格中获取ID,然后返回该ID,但我无法弄清楚怎么做到的。
答案 0 :(得分:0)
您可以使用Pandas中的merge
函数来执行此操作。有关更多说明,请参见this external page。如果您要合并多个栏,则可以传递一列栏,例如on=['key1', 'key2']
。
result = pd.merge(df1, df2, on='name')
答案 1 :(得分:0)
我不确定我是否正确理解了您的情况,但是如果您有一个带有ID和Name的表,而第二个仅包含name和其他数据的表,可以这样说:
具有id
和name
的表1:
像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
因此,您应该能够使用此功能自动加入数据框。请先尝试一下,如果您仍然遇到困难,我会举一些例子