2015-08-15 43 views
0

我有以下的大熊貓dateframe數天的不同商品:大熊貓在指數每日期操作

df = pd.DataFrame([], columns=["Bid", "Ask"], index_col='tid') 

填充的,它看起來如下:

2015-07-15 07:16:39.034 49.960 50.000 
2015-08-12 07:16:39.235 49.958 49.998 

我需要找到滾動平均每天。所以我提取日內如:

dates = set(df.index.map(pd.Timestamp.date)) 

然後我重複直通日期,並計算滾動平均值:

for d in dates: 
    df['rm200'] = np.round(pd.rolling_mean(df[d]['Bid'], window=200), 5) 

這提供了以下錯誤:

KeyError: datetime.date(2015, 7, 15)

如果我添加str(d)本身:

df['rm200'] = np.round(pd.rolling_mean(df[str(d)]['Bid'], window=200), 5) 

錯誤消失,但我沒有得到滾動的意思。

但是,如果我從錯誤複製的日期和添加它,我得到了我想要的結果,但由於顯而易見的原因只爲有問題的日期:

df['rm200'] = np.round(pd.rolling_mean(df['2015, 7, 15']['Bid'], window=200), 5) 

我如何可以遍歷直通日期並分別爲每個日期執行操作?

回答

0

你沒有足夠的數據來檢驗,但我建議沿着以下線的東西:

pd.rolling_mean(df.resample('1B'), window=200) 

df.resample('1B')創建一個基於平日數據幀(可以指定其他日曆)取每天的平均值(不清楚你的數據是否每天只有一個值或幾個值)。

pd.rolling_mean簡單地取最近200次每日觀察值的滾動平均值。

+0

不,這不起作用。我每天有大約50000個值。通過使用這種方法,我知道它將採用每日平均值併爲每日平均值創建一個滾動平均值。我需要每天滾動平均值。就像我計算一天中有5萬個數據點的滾動平均值,並在第二天重新開始,只是使用當天的數據點。 – Terjeja

+0

你的問題很不明確。我假設你有一些商品(如CL,C,ED等)和到期月份。我認爲你需要對這些進行某種分組,但是不清楚你是否想要商品或商品以及到期日期。我相信你的問題可能過於寬泛,你應該嘗試簡化它以闡明你所要求的內容。 – Alexander

+0

好的。感謝您的反饋。我試圖清除它,並再次問這裏:http://stackoverflow.com/questions/32158990/pandas-day-for-day – Terjeja