在“date”上合并pandas中的数据帧只合并头

2024-06-26 18:02:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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]

我正在尝试的代码如下

将numpy作为np导入 作为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开始,所以我想合并它们,使它们相交,这样我只在它们的日期交叉时才开始获取数据,我如何才能实现这一点

谢谢


Tags: columnscsv数据代码dateabheadrows
1条回答
网友
1楼 · 发布于 2024-06-26 18:02:02

日期列可能是object类型,因此不能在格式不同的日期(例如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')

相关问题 更多 >