问题是当从查询中获取数据并使用
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(' ','').split(','))
理论上,df应该是df1和df2之间的合并,但事实证明df是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()
然后用英语把它们读回来 df.read_csv()
现在合并是完美的,但问题是我不应该这样做。这是作弊,如果它影响其他任务,可能会导致一些失败。
我想使用merge的目的是通过使用 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
暂无答案!
目前还没有任何答案,快来回答吧!