我有一个大型数据集,如下所示:
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列中的数据有关,因为大多数值都是零。我尝试用空值替换所有零值,但无济于事。
有什么东西我不见了吗?
答案 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时可以在输出中编辑吗?