【发布时间】:2020-11-02 20:32:19
【问题描述】:
我想合并两个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 内部是一个奇怪的月份/日期错误,但我无法检测到它。 请帮我解决它!
【问题讨论】:
-
你试过添加这个吗?:pd.merge(df1, df2, on = 'dt_object', how = 'left') 我认为问题是内连接,它只在有行时保留行一场比赛