热线电话:13121318867

登录
2019-02-18 阅读量: 743
在'date'上合并pandas中的数据帧只会合并标头

我目前正在尝试按其各自的日期/时间列合并两个数据帧。有关我的每个数据集的信息如下:

data1.head(5)
DATE AA ... AB AB2
0 2011-01-01 00:30:00 6135.998518 ... 0.0 80.331500
1 2011-01-01 01:00:00 5711.638352 ... 0.0 74.380500
2 2011-01-01 01:30:00 5455.901902 ... 0.0 82.742500
3 2011-01-01 02:00:00 5130.634418 ... 0.0 102.091667
4 2011-01-01 02:30:00 4854.064390 ... 0.0 113.467667

[
5 rows x 30 columns]

data2.head(
5)
DATE A DEM A RRP ... AA7 RRP AB DEM AB RRP
0 2006/01/01 00:30:00 8013.27833 19.67 ... 36.00 5657.67500 20.03
1 2006/01/01 01:00:00 7726.89167 18.56 ... 33.00 5460.39500 18.66
2 2006/01/01 01:30:00 7372.85833 19.09 ... 33.01 5766.02500 20.38
3 2006/01/01 02:00:00 7071.83333 17.40 ... 33.02 5503.25167 18.59
4 2006/01/01 02:30:00 6865.44000 17.00 ... 33.00 5214.01500 17.53

[
5 rows x 11 columns]

我正在尝试的代码如下import numpy as np import pandas as pd

data1=pd.read_csv("1.csv")
data2=pd.read_csv(
"2.csv")

mergeddf = pd.merge(data1[[
'DATE','AA','AA2','AB']],
data2[[
'DATE','A RRP']],on='DATE')


mergeddf.to_csv(
"out.csv",index=False)

这就是我的mergeddf的样子:

mergeddf

因此,您可以看到代码只合并标头而不合并数据。当我的一个约会开始于2011,我的一个约会开始时2006我想合并它们以便它们相交,这样我只有在它们的日期交叉时才开始获取数据,我该如何实现这一目标呢?

解决办法:DATE列可能是类型对象,然后您无法加入不同格式的日期(例如2006/01/01 vs 2006-01-01)。您需要更改这些以键入datetime。

data1['DATE'] = pd.to_datetime(data1['DATE'])

data2['DATE'] = pd.to_datetime(data2['DATE'])

mergeddf = pd.merge(data1[['DATE','AA','AA2','AB']],

data2[['DATE','A RRP']],on='DATE')

0.0000
4
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子