首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫merge_asof显示两个数据的日期

熊猫merge_asof显示两个数据的日期
EN

Stack Overflow用户
提问于 2021-03-27 10:52:10
回答 1查看 165关注 0票数 1

我希望看到使用merge_asof进行合并之后的“右”数据格式o列的日期。

下面是一个玩具数据集:

代码语言:javascript
复制
df1=pd.DataFrame({'Num':[1,1,2,3,3],
                  'date':['1995-09-01','1995-10-04','1995-02-07','1995-05-10','1995-05-25'],
                  'A':[42.5,40,38,40,26],
                  'B': [13.3,12.3,12.2,11,9]})

df2=pd.DataFrame({'Num':[1,1,1,1,2,2,3,3,3,3],
                  'date':['1995-09-01','1995-09-02','1995-10-03','1995-02-04','1995-02-05','1995-02-07','1995-02-08','1995-05-09','1995-05-15','1995-05-21'],
                  'C':[40.5,39.5,37.2,15,41,38,38.2,39.7,40,28],
                  'D': [13.3,12.8,12.1,12.3,13.3,12.2,12.4,12.8,11,10]}

我使用以下方式进行左合并,使用merge_asof (给定两个数据格式的日期并不总是匹配的)

代码语言:javascript
复制
df3 = (pd.merge_asof(df1.sort_values('date'), 
                     df2.sort_values('date'), 
                     by=['Num'], on=['date'], 
                     direction='nearest'))

此合并为我提供所需的合并(在合并之前,请确保将df1和df2的日期转换为日期(pd.to_datetime) )。

但是,我希望合并也显示正确的数据格式(date_df2)的日期。因此,这是所需的输出:

代码语言:javascript
复制
Num     date     date_df2     A        B      C       D
2   1995-02-07  1995-02-07  38.0    12.2    38.0    12.2
3   1995-05-10  1995-05-09  40.0    11.0    39.7    12.8
3   1995-05-25  1995-05-21  26.0    9.0     28.0    10.0
1   1995-10-01  1995-09-01  42.5    13.3    40.5    13.3
1   1995-10-04  1995-10-03  40.0    12.3    37.2    12.1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-27 11:02:25

在执行date_df2操作之前,我们可以在dataframe df2中创建一个新的列merge_asof

代码语言:javascript
复制
df3 = pd.merge_asof(df1.sort_values('date'),
                    df2.assign(date_df2=df2['date']).sort_values('date'),
                    by='Num', on='date', direction='nearest')

代码语言:javascript
复制
   Num       date     A     B     C     D   date_df2
0    2 1995-02-07  38.0  12.2  38.0  12.2 1995-02-07
1    3 1995-05-10  40.0  11.0  39.7  12.8 1995-05-09
2    3 1995-05-25  26.0   9.0  28.0  10.0 1995-05-21
3    1 1995-09-01  42.5  13.3  40.5  13.3 1995-09-01
4    1 1995-10-04  40.0  12.3  37.2  12.1 1995-10-03
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66830490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档