熊猫数据框每天重新采样并计数事件

时间:2019-01-21 12:55:09

标签: python pandas datetime time-series resampling

我有一个带有时间索引的数据框。我可以对数据重新采样以获取(例如)每天的平均值,但是我也希望每天获取计数。这是一个示例:

import datetime
import pandas as pd
import numpy as np

dates = pd.date_range(datetime.datetime(2012, 4, 5, 11, 
0),datetime.datetime(2012, 4, 7, 7, 0),freq='5H')

var1 = np.random.sample(dates.size) * 10.0
var2 = np.random.sample(dates.size) * 10.0
df = pd.DataFrame(data={'var1': var1, 'var2': var2}, index=dates)

df1=df.resample('D').mean() 

我还想获得每天计数的第三列“计数”:

count
3
5
7

非常感谢!

1 个答案:

答案 0 :(得分:1)

使用Resampler.agg,然后在列中展平"laravelcollective/html": "5.4.*"

"require": {
    "php": ">=7.0.0",
    "fideloper/proxy": "~3.3",
    "laravel/framework": "5.4.*",
    "laravelcollective/html": "5.4.*", // Add this entry and then run composer update
    "laravel/tinker": "~1.0"
},

使用Grouper的替代解决方案:

MultiIndex

编辑:

df1 = df.resample('D').agg({'var1': 'mean','var2': ['mean', 'size']}) 
df1.columns = df1.columns.map('_'.join)
df1 = df1.rename(columns={'var2_size':'count'})
print (df1)
            var1_mean  var2_mean  count
2012-04-05   3.992166   4.968410      3
2012-04-06   6.843105   6.193568      5
2012-04-07   4.568436   3.135089      1