python - 合并缺少行的数据帧
问题描述
我想合并两个 DataFrame:
df1:
dt_object Lng
1 2020-01-01 00:00:00 1.57423
2 2020-01-01 01:00:00 1.57444
3 2020-01-01 02:00:00 1.57465
4 2020-01-01 03:00:00 1.57486
df2:
dt_object Price
0 2020-01-03 10:00:00 256.086667
1 2020-01-03 11:00:00 256.526667
2 2020-01-03 12:00:00 257.386667
3 2020-01-03 13:00:00 256.703333
4 2020-01-03 14:00:00 255.320000
dt_object 在这两种情况下都具有datetime64类型
df1 永远不会丢失行。所以它每天有24小时。
但是 df2 缺少行。
当我将它们结合起来时,就会出现不匹配。
df = pd.merge(df1, df2, on = 'dt_object')
合并的df:
dt_object Lng Price
0 2020-04-01 10:00:00 1.59270 183.996667
1 2020-04-01 11:00:00 1.59294 184.466667
2 2020-04-01 12:00:00 1.59319 184.810000
3 2020-04-01 13:00:00 1.59343 184.386667
4 2020-04-01 14:00:00 1.59367 184.533333
问题:
- Lng 1.59270 放错地方了。它从04.01.2020 10:00:00于2020-04-01 10:00:00起飞(月份和日期搞砸了)。但是价格 183.996667 是正确的。所以所有的 Lng 都是从错误的日期起飞的,日期/月份搞砸了。
- df2 中的价格从 2020-01-03 10:00:00 开始,但合并的数据框从 2020-04-01 开始
当我看到这个问题时,我为两个数据框添加了:
df1['dt_object'] = pd.to_datetime(df1['dt_object'], format='%Y-%m-%d %H:%M:%S')
df2['dt_object'] = pd.to_datetime(df2['dt_object'], format='%Y-%m-%d %H:%M:%S')
,但没有帮助。没有改变。dt_object 内部是一个奇怪的月份/日期错误,但我无法检测到它。请帮我修一下!
解决方案
您必须指定要执行左连接。Pandas 文档解释了参数的不同选项how
。
>>> df1 = pd.DataFrame({'dt_object': pd.date_range('2020-01-01', '2020-01-04'), 'Lng': [0, 1, 2, 3]})
>>> df1
dt_object Lng
0 2020-01-01 0
1 2020-01-02 1
2 2020-01-03 2
3 2020-01-04 3
>>> df2 = pd.DataFrame({'dt_object': [pd.Timestamp('2020-01-01'), pd.Timestamp('2020-01-02'), pd.Timestamp('2020-01-04')], 'Price': [1000, 2000, 3000]})
>>> df2
dt_object Price
0 2020-01-01 1000
1 2020-01-02 2000
2 2020-01-04 3000
>>> df1.merge(df2, how='left')
dt_object Lng Price
0 2020-01-01 0 1000.0
1 2020-01-02 1 2000.0
2 2020-01-03 2 NaN
3 2020-01-04 3 3000.0
推荐阅读
- php - 数组合并递归旧值与新值
- visualforce - 在页面上显示输入字段,当用户填写数据时,应保存并导航到机会的记录 ID
- amazon-web-services - S3 AWS 根据策略无效:策略条件失败:[“eq”、“$content-type”、“audio/wav”]
- arrays - 使用参考 Visual Basic 中的变量设置对象的参数
- python - 如何从网站实时检索 HTML 数据?
- mongodb - Atlas Mongodb:集群操作api的检查状态如何工作?
- networking - 最大吞吐量含义
- javascript - 在 React 中按 CTRL+ENTER 键后退出 ContentEditable 中的自定义元素样式
- python - 如何将我在文本冒险(函数)中的位置保存到文件中?
- sql - 如何使用列表中的变量创建 DB2 UNION 查询