[英]How to get last day of each month in Pandas DataFrame index (using TimeGrouper)
[英]Last-N days Pandas DataFrame TimeGrouper
我得到了一個以日期為索引的DataFrame,我想每天進行“獲取最近2天的總和”操作:
A
2015-11-01 1
2015-11-02 3
2015-11-03 2
2015-11-04 4
2015-11-05 1
2015-11-06 2
目的是:
Lastest_2_days_A
2015-11-01 1
2015-11-02 4
2015-11-03 5
2015-11-04 6
2015-11-05 5
2015-11-06 3
我認為TimeGrouper可能會有所幫助。 但是,當我使用TimeGrouper並將freq設置為“ 2D”時:
import numpy as np
import pandas as pd
rng = pd.date_range('2015-11-01', periods=6)
df = pd.DataFrame(np.random.randn(6,1), index=rng, columns=["A"]).applymap(lambda x:int(x))
df.groupby(pd.TimeGrouper(freq="2D", closed='right')).sum()
結果將是:
A
2015-10-30 1
2015-11-01 5
2015-11-03 5
2015-11-05 2
顯然,在TimeGrouper中,結果的索引之間沒有任何重疊,而我需要的是每天執行最新的N天總和運算。 是否可以執行此操作? 任何建議將不勝感激!
對於像這樣的簡單情況, shift
就足夠了:
In [6]:
print df
A
2015-11-01 1
2015-11-02 3
2015-11-03 2
2015-11-04 4
2015-11-05 1
2015-11-06 2
In [7]:
print df + df.shift(1).fillna(0)
A
2015-11-01 1
2015-11-02 4
2015-11-03 5
2015-11-04 6
2015-11-05 5
2015-11-06 3
更一般而言,這是rolling
應用的情況, min_periods
控制將被視為有效的最小窗口。 在這種情況下,跳過它會導致第一個單元格具有nan
:
In [8]:
print pd.rolling_sum(df,window=2,min_periods=1)
A
2015-11-01 1
2015-11-02 4
2015-11-03 5
2015-11-04 6
2015-11-05 5
2015-11-06 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.