Pandas数据框平均值

时间:2018-03-13 18:10:08

标签: python pandas dataframe data-analysis pandas-groupby

我有一个大型数据集,如下所示:

 Year    Month    Day    Hour   Count   Value
 2017      1       1      1       59      0
  ..       ..     ..      ..       ..    ..
 2011      12      29     23      60     12 

我正在尝试使用Pandas为同一个月,日和小时的Value列生成平均值。

我过去曾用过这个:

df = pd.read_csv('pathtofile/values.csv')
df1 = df.groupby([df.Month,df.Day,df.Hour]).mean()

然而,新的df1不会对Value列进行平均,但它确实提供了Count和Year列的平均值(这对我来说是不感兴趣的)。我认为这与Value列中的数据有关,因为大多数值都是零。我尝试用空值替换所有零值,但无济于事。

有什么东西我不见了吗?

2 个答案:

答案 0 :(得分:1)

尝试

   0  1 
0  2  4 
1  4  6
2  6  9
3  8  12 

答案 1 :(得分:0)

我能够按预期运行代码。

我制作了自己的测试文件,名为' values.txt'看起来像

foobarfoo

然后我进入了

Year,Month,Day,Hour,Count,Value
2017,1,1,1,59,0
2016,1,1,1,45,12
2014,2,3,4,34,43
2013,1,1,1,12,56

最后我通过

达到了我认为你想要的结果
>>> import pandas as pd
>>> df = pd.read_csv('values.txt')
>>> df
   Year  Month  Day  Hour  Count  Value
0  2017      1    1     1     59      0
1  2016      1    1     1     45     12
2  2014      2    3     4     34     43
3  2013      1    1     1     12     56

我认为我同意Paul H,你应该检查列是否是一个字符串。因为我也成功:

>>> df1 = df.groupby(['Month', 'Day', 'Hour'])
>>> df1['Value'].mean()
Month  Day  Hour
1      1    1       22.666667
2      3    4       43.000000
Name: Value, dtype: float64

打印df1时可以在输出中编辑吗?