如果我有一个数据框,例如:
index = pd.date_range(start='2014 01 01 00:00', end='2014 01 05 00:00', freq='12H')
df = pd.DataFrame(pd.np.random.randn(9),index=index,columns=['A'])
df
Out[5]:
A
2014-01-01 00:00:00 2.120577
2014-01-01 12:00:00 0.968724
2014-01-02 00:00:00 1.232688
2014-01-02 12:00:00 0.328104
2014-01-03 00:00:00 -0.836761
2014-01-03 12:00:00 -0.061087
2014-01-04 00:00:00 -1.239613
2014-01-04 12:00:00 0.513896
2014-01-05 00:00:00 0.089544
我想重新采样到每日频率,这很容易:
df.resample(rule='1D',how='mean')
Out[6]:
A
2014-01-01 1.544650
2014-01-02 0.780396
2014-01-03 -0.448924
2014-01-04 -0.362858
2014-01-05 0.089544
但是,我需要跟踪每天有多少个实例。是否有一种很好的 pythonic 方法使用重新采样来执行指定的“如何”操作并跟踪进入每个平均值的数据点数量,例如产量
Out[6]:
A Instances
2014-01-01 1.544650 2
2014-01-02 0.780396 2
2014-01-03 -0.448924 2
2014-01-04 -0.362858 2
2014-01-05 0.089544 2
最佳答案
方便地,如何
接受列表:
df1 = df.resample(rule='1D', how=['mean', 'count'])
这将返回一个带有 MultiIndex 列的 DataFrame:一个级别表示“A”,另一个级别表示“mean”和“count”。要获得像问题中所需输出这样的简单 DataFrame,您可以删除额外的级别,例如 df1.columns = df1.columns.droplevel(0) ,或者更好的是,您可以在 df['A']
而不是 df
。
关于python-2.7 - 对 pandas 数据帧重新采样并计算实例数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22507694/