weixin_46253891 2023-02-15 20:51 采纳率: 68.4%
浏览 67
已结题

Excel两表根据指定值进行一对多合并效果

我有2个excel文件,A文件是订单金额信息,B文件是手续费信息,
两个文件都可以用“Transaction_id”来进行一对多进匹配,达到紫色的效果。

这种效果应该不叫合并,所以感觉不是用merge,不知道这种操作叫什么,看了一下groupby,好像也不是。

img

  • 写回答

9条回答 默认 最新

  • 阳光宅男xxb 2023-02-15 21:10
    关注

    两个dateframe A先根据这个id使用groupby或者筛选到对应的B数据列,然后合并concat操作。需要代码的话,我给你写。采纳下就行。
    最终效果:

    img


    实现代码:

    import pandas as pd
    
    # 读取Excel文件
    df_a = pd.read_excel('A.xls',dtype=str)
    df_b = pd.read_excel('B.xls',dtype=str)
    
    #
    df_result = pd.DataFrame()
    for i in range(len(df_a)):
    
        transaction_id = df_a.iloc[i]['Transaction_id']
        df = df_b[df_b['Transaction_id']==transaction_id] #按transaction_id查找B表的数据
        #合并数据
        #当前行数据
        df_current = df_a.iloc[i].to_frame().T
    
        #获取Partner_Transaction_id列
        coumn = pd.DataFrame([df.iloc[0]['Partner_Transaction_id']],columns=['Partner_Transaction_id'],index=[i])
    
        # 增加一列Partner_Transaction_id
        df_current = pd.concat([coumn,df_current],axis=1,)
    
        df_result = pd.concat([df_result,df_current])
        #增加一行(把B表符合条件的表头作为一行)
        row= pd.DataFrame([df.columns.tolist()],columns=df_result.columns)
    
        df_result = pd.concat([df_result,row])
        #把B中符合条件的行都添加进来
        for j in range(len(df)):
            row = pd.DataFrame([df.iloc[j].tolist()], columns=df_result.columns)
            df_result = pd.concat([df_result, row],ignore_index=True)
    
        # 每2个记录之间添加一个空行,为了美观
        row = pd.DataFrame([["" for a in range(len(df_current.columns))]], columns=df_current.columns)
        df_result = pd.concat([df_result, row], ignore_index=True)
    
    
    
    # 将结果保存到Excel文件 追加保存
    df_result.to_excel('result_ab.xls',index=False)
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(8条)

报告相同问题?

问题事件

  • 系统已结题 2月24日
  • 已采纳回答 2月16日
  • 修改了问题 2月15日
  • 创建了问题 2月15日

悬赏问题

  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗