2016-12-09 152 views
1

我正在爲此代碼苦苦掙扎,我確信必須有一個直接的解決方案。Python:查找具有相同日期的值並計算差異

我有一個數據框的日期和值。基本上,我想看到同一日期的價值差異。我知道如何總結它們,但我怎麼能看到它們之間的三角洲?那麼,我如何創建「差異」列?像這樣:

DateTime   Values   Difference 
06/12/2016 00:00 58    25 
06/12/2016 00:15 75    63 
06/12/2016 00:30 66    -79 
06/12/2016 00:45 23    11 
06/12/2016 01:00 17    -537 
06/12/2016 00:00 33 
06/12/2016 00:15 12 
06/12/2016 00:30 145 
06/12/2016 00:45 12 
06/12/2016 01:00 55 


filename = path + "Forecast.csv" 
test = pd.read_csv(filename) 
df2 = test.groupby('DateTime')['Values'].sum() 

有沒有辦法計算差值而不是總和?

感謝您的支持!

問候,

ØVizzle

+0

'test.groupby( '日期時間') '值'。DIFF()'應該工作 – EdChum

+0

試了一下,將無法正常工作。只是空的單元格... –

+0

其實我想你想'test ['Difference'] = test.groupby(test ['DateTime']。dt.date)['Values']。transform('diff')' – EdChum

回答

2

我必須先理清

df.set_index('DateTime').sort_index().groupby(level=0).diff(-1).dropna() 

enter image description here


要匹配你有什麼

df.join(
    df.sort_values('DateTime').groupby('DateTime') \ 
     .diff(-1).dropna().rename(columns={'Values': 'Difference'}) 
).fillna('') 

enter image description here

+0

這正是我正在尋找的!感謝那。 唯一的是,我有更多的列比原來的表中的2 ..那麼它將無法正常工作..我如何告訴python添加差異列在最後填充列的結尾? –

+0

你必須告訴我你在說什麼。 – piRSquared

+0

見下面.. 謝謝 –