2017-07-26 116 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年的数据集的平均水平。 。 –