首页 > 解决方案 > 如何根据行值组合两个不同长度的熊猫数据框

问题描述

我有以下两个熊猫数据框:

数据框#1:

    user_id       animals    
0         1         'dog'
1         1         'cat'
2         1         'cow'
3         2         'dog'
4         2         'cat'
5         2         'cow'
...

数据帧#2:(column_D 在这个任务中并不重要)

    location     column_D
0       'CA'            1
1       'MA'            1
2       'AZ'            1
3       'CT'            1
...

我希望基于#1和#2创建一个新的数据框#3:

数据框#3:

    user_id       animals       location
0         1         'dog'           'MA'
1         1         'cat'           'MA'
2         1         'cow'           'MA'
3         2         'dog'           'AZ'
4         2         'cat'           'AZ'
5         2         'cow'           'AZ'
...

数据帧#3 的第一列和第二列与数据帧#1 相同。对于第三列,我希望根据它的 user_id 和数据帧 #2 中的索引来分配一个位置。例如,对于数据帧 #3 中的第 0 行,由于其 user_id = 1,我将检查数据帧 #2 中索引 = 1 的位置,然后将该位置(在本例中为“MA”)分配给用户。

我搜索了使用 concat、map、merge 等函数的示例,但找不到与此案例类似的示例。有没有办法完成这个任务?

非常感谢!

标签: pythonpandasdataframe

解决方案


尝试地图

df["location"] = df1.user_id.map(df2.location)

    user_id animals location
0      1    'dog'   'MA'
1      1    'cat'   'MA'
2      1    'cow'   'MA'
3      2    'dog'   'AZ'
4      2    'cat'   'AZ'
5      2    'cow'   'AZ'

推荐阅读