1
我有一個數據幀,我想用它來計算相對於事件日期的滾動和。每個列的事件日期都不相同,並由每列中有值的最新日期表示。Python Pandas - 將絕對時間段轉換爲相對時間段
這裏是一個玩具例子:
rng = pd.date_range('1/1/2011', periods=8, freq='D')
df = pd.DataFrame({
'1' : [56, 2, 3, 4, 5, None, None, None],
'2' : [51, 2, 3, 4, 5, 6, None, None],
'3' : [51, 2, 3, 4, 5, 6, 0, None]}, index = rng)
pd.rolling_sum(df,3)
它產生看起來像這樣的數據幀:
1 2 3
2011-01-01 NaN NaN NaN
2011-01-02 NaN NaN NaN
2011-01-03 61 56 56
2011-01-04 9 9 9
2011-01-05 12 12 12
2011-01-06 NaN 15 15
2011-01-07 NaN NaN 11
2011-01-08 NaN NaN NaN
我現在要對齊的最後一場比賽日期的數據框和集的最後一行索引爲0,每個前面的索引爲-1,-2,-3等等。期間不再是絕對的,而是相對於事件日期。
所需的數據幀是這樣的:
1 2 3
-7.00 NaN NaN NaN
-6.00 NaN NaN NaN
-5.00 NaN NaN NaN
-4.00 NaN NaN 56
-3.00 NaN 56 9
-2.00 61 9 12
-1.00 9 12 15
0.00 12 15 11
感謝您的任何指導。
FWIW,我不得不像這樣(我通常所說的)「重複實現」幾次。 – DSM
正在等你評論!我認爲第一部分實際上可能是一個不錯的方法(如果將它作爲框架,效率會更高)。感興趣嗎?它在dropna上的變體,也許''df.dropna(kind ='furthest',axis = 1)''或者什麼? (或者'faller') – Jeff
https://github.com/pydata/pandas/issues/6713 – Jeff