2016-12-09 90 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

见下面.. 谢谢 –