Pandas合并错误:timedate转换为unix

时间:2017-09-01 23:53:55

标签: python pandas datetime merge

我有2个数据框,组织如下:

eth_price.head(n=5)

Out[12]: 
                 time  eth_price
0 2017-08-28 16:19:00    344.021
2 2017-08-28 16:24:00    343.833
3 2017-08-28 16:29:00    343.643
4 2017-08-28 16:34:00    343.632
5 2017-08-28 16:39:00    343.456
btc_price.head(n=5)

Out[13]: 
                  time   btc_price
0  2017-08-27 22:50:00  4,389.6113
1  2017-08-27 22:51:00  4,389.0850
2  2017-08-27 22:52:00  4,388.8625
3  2017-08-27 22:53:00  4,389.7888
4  2017-08-27 22:56:00  4,389.9138

我正在尝试使用以下代码在time上合并它们:

all_data = pd.merge(btc_price, eth_price, on = 'time', how = 'outer')

一个数据帧是6195行,另一个是908.理论上,all_data应该返回6195行,包含3列(time,btc_price,eth_price)。

出于某种原因,最初与eth_price时间戳匹配的btc_price时间戳正在合并数据框中转换为unix,如下所示:

time                btc_price      eth_price
1504304640000000000     NA           386.541
1504304940000000000     NA           386.48
1504305240000000000     NA           386.67199999999997
1504305540000000000     NA           386.37199999999996
1504305840000000000     NA           386.606

为什么会发生这种情况,我该如何解决?

编辑:即使我使用eth_price[0] = pd.to_datetime(eth_price[0], unit = 's')

明确定义eth_price数据的时间戳,此问题仍然存在

1 个答案:

答案 0 :(得分:0)

好吧,我无法修复eth_price的转换为unix时间戳,我也无法弄清楚它为什么会在第一时间发生。

所以,我的解决方案是使用df.join,如下所示:

all_data1 = btc_price.join(eth_price)

当我运行这行代码时,eth_price['time']列保持原始格式。