首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas - self-join with date比较

pandas - self-join with date比较
EN

Stack Overflow用户
提问于 2020-05-05 23:18:53
回答 1查看 143关注 0票数 0

给定一个Pandas数据帧df

代码语言:javascript
复制
     date         numeric_field
0   2019-06-06       n
1   2019-06-07       n
2   2019-06-08       n

我想在日期上执行自连接,并将函数应用于numerical_field

在SQL中,我会这样做:

代码语言:javascript
复制
SELECT a.date,
        FUN(b.numeric_field))) new_field
        FROM df a
        INNER JOIN df b
        ON b.date < a.date 
        WHERE a.date > '2019-06-06'
        AND a.date <= '2019-06-08'
        AND b.date >= '2019-06-06'
        GROUP BY a.date 

结果应该是:

代码语言:javascript
复制
     date           new_field
0   2019-06-07       fun(n)
1   2019-06-08       fun(n)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-05 23:37:18

我能想到的最快的方法是交叉合并和查询:

代码语言:javascript
复制
df = df.assign(dummy=1)

(df.merge(df, on='dummy', suffixes=['','_r'])
   .query('"2019-06-06"<=date_r<date<="2019-06-08"')       # filter
   .assign(new_field=lambda x: x['numeric_field'].sum())   # replace the function in `lambda`
   [['date','new_field']]
)

输出:

代码语言:javascript
复制
         date new_field
3  2019-06-07       nnn
6  2019-06-08       nnn
7  2019-06-08       nnn
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61616617

复制
相关文章

相似问题

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