2017-07-26 44 views
1

選擇的值使用的:意味着對數據幀

df = pd.read_csv('values_per_hour.csv') 

數據幀是這樣的:

Hour Vel 
0  10 
1  11 
2  15 
.  . 
.  . 
.  . 
23 7 
0  17 
1  3 
2  4 
.  . 
.  . 
.  . 
23 2 
0 
... ... 

這個數據幀在時間10年的數據的。可以看出,第一列是幾個小時,第二列是某物的速度。主要目標是在小時爲0時採取所有速度的平均值。我只是沒有意識到如何做到這一點,如果有人可以回答會有幫助。

回答

3

布爾索引與mean

df.loc[df['Hour'] == 0,'Vel'].mean() 

或使用query

df.query('Hour == 0')['Vel'].mean() 

如果你想這樣做每隔一小時使用:

df.groupby('Hour')['Vel'].mean() 

或嘗試,並確保列是datetime dtype first:

df['Ano_Mes_Dia_Hora'] = pd.to_datetime(df.Ano_Mes_Dia_Hora) 

df.groupby(df['Ano_Mes_Dia_Hora'].dt.hour)['Vel'].mean() 
+1

對於你的第一個反應,你的意思是做'df [df ['Hour'] == 0,'Vel']。mean()'? 'df [df ['Hour'== 0],'Vel']。mean()'可能會失敗 – johnchase

+2

@johnchase是的,你是對的。沒有測試數據的麻煩做了驗證。我希望更多的人會遵循[MVCE](https://stackoverflow.com/help/mcve)。謝謝。 –

+0

對不起,也許我不能很好地解釋我的問題。以@johnchase回答我的方式,我需要做24次這個過程才能達到24次平均值(一天中的每一小時之一)。 我的數據幀是這樣的: Ano_Mes_Dia_Hora \t \t VEL 2007-01-01 12:00:00 AM \t 16.753743 2007-01-01上午01時00分○○秒\t 18.060159 2007- 01-01上午02時00分零零秒\t 18.143939 ... 2007-01-01早上03:00:00 \t 18.212167 我想是要知道每個小時在10年的數據集的平均水平。 。 –