微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据帧不合并,但使用 Pandas python 连接

如何解决数据帧不合并,但使用 Pandas python 连接

问题是从查询获取数据并使用类似

df1 = pd.DataFrame(test_data)
df2 = pd.DataFrame(original_data)
df = df1.merge(df2,how = 'outer',indicator=False,left_on = query_uniq_col.replace(' ','').split(','),right_on = query_uniq_col.replace(' ','))

理论上,df应该是df1和df2的合并,但原来df是df1和df2串联的结果。我已经尝试使用

来匹配 df1 和 df2 之间的类型
for x in df2.columns:
            df1[x]=df1[x].astype(df2[x].dtypes.name)
            print(df1[x].dtypes)
            if str(df1[x].dtypes) == 'float64':
                print('yes')
                df1[x].round(decimals=8)
                df2[x].round(decimals=8)

结果不会改变。如果我使用 df.to_csv() 将这些 df1 和 df2 导出到 csv 然后用 df.read_csv() 读回它们,现在合并是完美的,但问题是我不应该这样做。这是作弊,如果影响其他气流任务可能会导致一些失败。

我想使用合并的目的是通过使用找到两个数据帧之间的差异 df["difference"]= df["gtv_x"] - df["gtv_y"] 然后我会将唯一的差异写回数据库。 请帮忙

当前:

df1:
date        city vehicle_type gtv   number_of_bookings
2021-11-07  HCM Car          1000   200
2021-11-06  HN  Truck        2000   300
2021-11-05  LA  6w_truck     3000   400
2021-11-04  CM  mini_van     4000   500

df2:
date        city vehicle_type gtv   number_of_bookings
2021-11-07  HCM Car          1000   200
2021-11-06  HN  Truck        2000   300
2021-11-05  LA  6w_truck     3000   400
2021-11-04  CM  mini_van     9000   500

df:
date        city vehicle_type gtv_x   number_of_bookings_x gtv_y number_of_bookings_y
2021-11-07  HCM  Car          1000    200
2021-11-06  HN   Truck        2000    300
2021-11-05  LA   6w_truck     3000    400
2021-11-04  CM   mini_van     4000    500
2021-11-07  HCM  Car                                       1000    200
2021-11-06  HN   Truck                                     2000    300
2021-11-05  LA   6w_truck                                  3000    400
2021-11-04  CM   mini_van                                  9000    500

期待:

date        city vehicle_type gtv_x   number_of_bookings_x gtv_y number_of_bookings_y
2021-11-07  HCM  Car          1000    200                  1000  200
2021-11-06  HN   Truck        2000    300                  2000  300
2021-11-05  LA   6w_truck     3000    400                  3000  400
2021-11-04  CM   mini_van     4000    500                  9000  500

解决方法

我发现了这个问题,虽然改变了格式和样式,但没有用。所以我确实尝试将日期字段转换为字符串,问题解决了。非常感谢您为我抽出时间!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。