为了账号安全,请及时绑定邮箱和手机立即绑定

根据另一个数据框列值将数据框列和行合并到特定索引

根据另一个数据框列值将数据框列和行合并到特定索引

犯罪嫌疑人X 2021-12-09 15:20:37
对不起,如果标题不够清楚,我会用例子更好地解释自己:dataframe1 = pd.DataFrame(columns=['UniqueNum', 'B' ,'A'])dataframe1['UniqueNum'] = ['1a','2b', '3c']dataframe1['A'] = ['2','6', '7']dataframe1['B'] = ['3','88', '23']print dataframe1dataframe2 = pd.DataFrame(columns=['TestId', 'C' ,'D'])dataframe2['TestId'] = ['1a','2b', '3c', '1a', '3c', '2b']dataframe2['C'] = ['22','46', '47','22','46', '47']dataframe2['D'] = ['13','88', '233','22','46', '47']print dataframe2打印是:>>>   UniqueNum   B  A0        1a   3  21        2b  88  62        3c  23  7  TestId   C    D0     1a  22   131     2b  46   882     3c  47  2333     1a  22   224     3c  46   465     2b  47   47>>> 我想合并,以便输出数据帧看起来像这样:      TestId   C    D   B  A0     1a       22   13   3  21     2b       46   88  88  62     3c       47  233  23  73     1a       22   22   3  24     3c       46   46  23  75     2b       47   47  88  6意思是将具有值的列添加到 dataframe2,对应于 dataframe1 中的 UniqueNum 与 dataframe2 中的 TestId 之间的匹配。谢谢
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您可以DataFrame.merge与左连接和rename列一起使用:


d = {'UniqueNum':'TestId'}

df = dataframe2.merge(dataframe1.rename(columns=d), how='left', on='TestId')

或创建的索引,而不是rename和更改参数left_on和right_index:


df = dataframe2.merge(dataframe1.set_index('UniqueNum'), 

                      how='left', 

                      left_on='TestId', 

                      right_index=True)

或指定两列和最后删除UniqueNum列:


df = dataframe2.merge(dataframe1, 

                      how='left', 

                      left_on='TestId', 

                      right_on='UniqueNum').drop('UniqueNum', axis=1)

print (df)


  TestId   C    D   B  A

0     1a  22   13   3  2

1     2b  46   88  88  6

2     3c  47  233  23  7

3     1a  22   22   3  2

4     3c  46   46  23  7

5     2b  47   47  88  6


查看完整回答
反对 回复 2021-12-09
  • 1 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信