在两个不同大小的数据帧上合并

2024-04-27 10:40:02 发布

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

我有两个数据帧,我想合并在日期列。在

第一个数据帧包含日期时间:

    DateTime,Date,Hour

    2015-01-01 00:00:00 | 2015-01-01 | 00 
    2015-01-01 00:00:01 | 2015-01-01 | 01 

    ...

    2015-01-01 23:00:00 | 2015-01-01 | 23

第二种方法是每天一次:

^{pr2}$

我想合并在日期列,以便在一个日期的24小时将有相同的日常功能采取第二个数据帧。在

2015-01-01 00:00:00 | 2015-01-01 | 00 |  daily something1

2015-01-01 01:00:00 | 2015-01-01 | 01 |  daily something1

...

2015-01-02 00:00:00 | 2015-01-01 | 23|  daily something2

这可以通过编写一些代码来完成,但是我可以使用join或merge来实现吗?试着用左,右连接来做,但做不到。在


Tags: 数据方法代码功能datetimedate时间merge
1条回答
网友
1楼 · 发布于 2024-04-27 10:40:02

让我们按照您描述的方式合并以下两个数据帧。我不知道是否有一个好的一行程序来完成这一点,我想看看,但这个方法是有效的。在

import pandas as pd

df = pd.DataFrame({'DATE': pd.date_range(start='2016-01-01 00:00:00',
                                         freq='12H', periods=10)})
df2 = pd.DataFrame({'DATE': pd.date_range(start='2016-01-01',
                                          freq='D', periods=5),
                    'VALUE': range(0,5)})

# extract the date from each column
df['DATE_DAY'] = df['DATE'].dt.date
# even though the df2 DATE column only shows the date, it's still in
# a different type (datetime64[ns]), so we have to convert it as well
df2['DATE_DAY'] = df2['DATE'].dt.date

tmp = df.merge(df2, on='DATE_DAY')
>>> tmp
               DATE_x     DATE_y    DATE_DAY  VALUE
0 2016-01-01 00:00:00 2016-01-01  2016-01-01      0
1 2016-01-01 12:00:00 2016-01-01  2016-01-01      0
2 2016-01-02 00:00:00 2016-01-02  2016-01-02      1
3 2016-01-02 12:00:00 2016-01-02  2016-01-02      1
4 2016-01-03 00:00:00 2016-01-03  2016-01-03      2
5 2016-01-03 12:00:00 2016-01-03  2016-01-03      2
6 2016-01-04 00:00:00 2016-01-04  2016-01-04      3
7 2016-01-04 12:00:00 2016-01-04  2016-01-04      3
8 2016-01-05 00:00:00 2016-01-05  2016-01-05      4
9 2016-01-05 12:00:00 2016-01-05  2016-01-05      4

相关问题 更多 >