2014-03-19 119 views
2

如果我有一個數據幀,例如:重新取樣大熊貓數據幀,並計算實例

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 

不過,我需要跟蹤每天有多少實例正在進入。是否有一種很好的python方法來使用resample來執行指定的「how」操作和跟蹤進入每個平均值的數據點的軌跡數量,例如產生

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 

回答

3

便利,how接受列表:

df1 = df.resample(rule='1D', how=['mean', 'count']) 

這將返回一個數據幀具有多指標柱: 'A',另一個水平 '平均' 和 '計數' 的一個級別。爲了在您的問題中獲得一個簡單的DataFrame,例如df1.columns = df1.columns.droplevel(0)或者更好的是,您可以在df['A']而不是df上進行重新採樣。

+0

哇。簡單而優雅。感謝您向我介紹這一點! – tnknepp