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(' ','').split(','))
理论上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)
结果没有改变。如果我将这些 df1 和 df2 导出到 csv 使用,df.to_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
解决方案
我发现了这个问题,虽然改变了格式和风格,但它没有用。所以我确实尝试将日期字段转换为字符串,问题得到了解决。非常感谢你花时间陪我!
推荐阅读
- python - 先前方程的乘积会受到之后更改输入运算符的影响吗?
- azure - 如何在 Azure 市场中直接将 ARM 模板部署为解决方案模板
- python - 带有 ion() 的 MatPlotLib 不显示窗口
- python - 使用 pandas 计算相对强弱指数
- python - 将 JSON 字符串存储在 csv 文件中以进行 neo4j 导入
- excel - (EXCEL-VBA)尝试将日期作为标准传递给 MedianIFS UDF,但仅解析月份(通过 MID 函数)以获得标准阈值
- c# - 如何在 .NET 中创建表达式构建器
- python - 如何限制输入的位数?
- javascript - jQuery Autocomplete - 在选择之前不要填充文本输入(鼠标或输入)
- amazon-ec2 - 使用 AWS Batch 服务部署 Spring 批处理应用程序会是一个好的设计吗?