python - 使用 Pandas 计算一段时间内创建的观测值数量

标签 python pandas

对于数据中的每个观察,我都会尝试计算出过去 7 天内创建的观察数量。

obs       date
 A      1/1/2000
 B      1/4/2000
 C      1/5/2000
 D      1/10/2000

会变成:

obs       date       births last week
 A      1/1/2000            0
 B      1/4/2000            1
 C      1/5/2000            2
 D      1/10/2000           2
 E      1/20/2000           0

是否可以使用rolling_count方法得到这个?

编辑 1:Karl 下面的方法效果很好,但有点慢。关于如何在没有 cython 的情况下更快地实现这一点,有什么想法吗?

最佳答案

您可以像下面那样执行此操作(尽管根据数据的结构,我认为您可以更优雅、更高效地执行此操作......我认为这很慢):

import datetime as dt
import pandas as pd

df['date'] = pd.to_datetime(df['date'])

          date
obs           
A   2000-01-01
B   2000-01-04
C   2000-01-05
D   2000-01-10
E   2000-01-20

def past7(x,df):
    back = x['date'] - dt.timedelta(days=7)
    return df[(df['date'] >= back) & (df['date'] < x['date'])].count()

df['births_last_7days'] = df.apply(lambda x: past7(x,df),axis=1)
print df

         date  births_last_7days
obs                              
A   2000-01-01                  0
B   2000-01-04                  1
C   2000-01-05                  2
D   2000-01-10                  2
E   2000-01-20                  0

关于python - 使用 Pandas 计算一段时间内创建的观测值数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22701346/

相关文章:

python - PANDAS - 绘制特定行并更改列的顺序

Python-使用日期创建月份的周数列表

python - Pandas :删除等于周末的列

python - 来自困惑列表的 Pandas 数据框

python - Pandas :在一行中向数据框添加多列

python - 在 Python 中解压缩文件

python - 无法获取按钮来切换 pygame 中的更改

python - 从 numpy 数组中删除子数组

python - 重建两个最初是 float 的(字符串连接的)数字

python - 编程错误 : LOB variable no longer valid after subsequent fetch