2014-12-13 191 views
0

我有一個關於溫度信息的文件,是這樣的:大熊貓GROUPBY - 維錯號

DateTime,Temperature 
2014-11-12-12:43:12,24 
2014-12-12-13:45:12,10 
2014-12-12-13:46:12,20 
2014-12-13-05:47:13,24 
2014-12-13-05:48:13,20 
2014-12-13-06:49:13,24 

我想用大熊貓平均按小時,天,月溫度和組並保存結果在另一個文件中。事情是這樣的:

Month,Day,Hour,AverageTemperature 
11,12,12,24 
12,12,13,15 
12,13,05,22 
12,13,06,22 

我試過這段代碼:

df = pd.read_csv("datatemp.dat", parse_dates='DateTime', index_col=0, sep=",") 
month_day_hour_means = df.groupby(lambda x: (x.hour, x.month)).mean() 
print df 

,不幸的是我得到這個錯誤:

ValueError: Buffer has wrong number of dimensions (expected 1, got 2) 

任何一個能幫助我嗎?

回答

1

你的代碼在Pandas版本0.15.1中正常工作。

In [74]: df.groupby(lambda x: (x.hour, x.month)).mean() 
Out[74]: 
      Temperature 
(5, 12)   22 
(6, 12)   24 
(12, 11)   24 
(13, 12)   15 

但是,你也可以使用其下面,作爲額外的獎勵,更快:

In [73]: df.groupby([df.index.hour, df.index.month]).mean() 
Out[73]: 
     Temperature 
5 12   22 
6 12   24 
12 11   24 
13 12   15 

lambda函數是根據每個項目調用一次在df.index。 相比之下,df.index.hour和​​使用快速Cythonized函數生成所需值 。


result = df.groupby([df.index.hour, df.index.day, df.index.month]).mean().reset_index() 
result.columns = ['Hour', 'Day', 'Month', 'AverageTemperature'] 

result[['Month', 'Day', 'Hour', 'AverageTemperature']] 

產量

Month Day Hour AverageTemperature 
0  12 13  5     22 
1  12 13  6     24 
2  11 12 12     24 
3  12 12 13     15 
+0

df.groupby([df.index.hour,df.index.month])。意味着()工作正常。非常感謝 – user1680012 2014-12-13 18:59:23