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

将值从小数据框映射到大数据框

将值从小数据框映射到大数据框

qq_笑_17 2021-03-30 13:15:58
我有两个数据框。DF1:Page      LineNum      Value1          1            0.51          2            0.61          3            0.72          1            0.92          2            0.4DF2:初始数据帧是前三列,我必须生成名为New_Value的第四列。Page      LineNum      Word    New_Value1          1            g1      0.51          1            g2      0.51          1            g3      0.51          1            g4      0.51          2            g5      0.61          2            g6      0.61          3            g7      0.71          3            g8      0.7...我必须生成DF2的第四列,该列实际上是从DF1的唯一“ Page”和“ LineNum”值映射的。在DF2中,只是根据DF1中相对于“页面”和“ LineNum”的唯一值重复这些值。我目前正在通过for循环执行此操作:    for index, row in DF1.iterrows():        DF2.ix[((DF2['Page'] == row['Page']) & (DF2['LineNum'] == row['LineNum'])),['New_Value']] = row['Value']这绝对可以,但是两个数据帧都很大。所以我需要一些优化的功能,也许使用groupby和lambda,但无法设计出确切的功能。请提出没有For循环的优化版本。如果还有其他需要我解释的内容,请发表评论。我正在使用Python3和pandas。
查看完整描述

1 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

我认为需要merge左连接:


df = (df2.merge(df1.rename(columns={'Value':'New_Value'}),

                on=['Page','LineNum'], how='left'))

print (df)


   Page  LineNum Word  New_Value

0     1        1   g1        0.5

1     1        1   g2        0.5

2     1        1   g3        0.5

3     1        1   g4        0.5

4     1        2   g5        0.6

5     1        2   g6        0.6

6     1        3   g7        0.7

7     1        3   g8        0.7


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号