У меня есть данные о направлении и скорости ветра во фрейме данных Pandas, в 10-минутных срезах. Это выглядит так:
year month day hour minutes direction speed filename
0 1999.0 1 1 0 0 84.0 7.1 mlrf1c1999.txt
1 1999.0 1 1 0 10 75.0 7.5 mlrf1c1999.txt
2 1999.0 1 1 0 20 79.0 7.2 mlrf1c1999.txt
3 1999.0 1 1 0 30 77.0 7.2 mlrf1c1999.txt
4 1999.0 1 1 0 40 76.0 6.7 mlrf1c1999.txt
5 1999.0 1 1 0 50 76.0 7.5 mlrf1c1999.txt
6 1999.0 1 1 1 0 81.0 6.9 mlrf1c1999.txt
7 1999.0 1 1 1 10 75.0 7.3 mlrf1c1999.txt
8 1999.0 1 1 1 20 77.0 7.4 mlrf1c1999.txt
9 1999.0 1 1 1 30 73.0 6.9 mlrf1c1999.txt
10 1999.0 1 1 1 40 78.0 6.5 mlrf1c1999.txt
11 1999.0 1 1 1 50 75.0 7.3 mlrf1c1999.txt
...
1147812 1997.0 12 31 21 0 261.0 6.0 mlrf1c1997.txt
1147813 1997.0 12 31 21 10 260.0 5.9 mlrf1c1997.txt
1147814 1997.0 12 31 21 20 262.0 5.5 mlrf1c1997.txt
1147815 1997.0 12 31 21 30 279.0 6.5 mlrf1c1997.txt
1147816 1997.0 12 31 21 40 283.0 7.3 mlrf1c1997.txt
1147817 1997.0 12 31 21 50 282.0 7.2 mlrf1c1997.txt
1147818 1997.0 12 31 22 0 277.0 6.9 mlrf1c1997.txt
1147819 1997.0 12 31 22 10 283.0 7.6 mlrf1c1997.txt
1147820 1997.0 12 31 22 20 283.0 7.2 mlrf1c1997.txt
1147821 1997.0 12 31 22 30 290.0 7.5 mlrf1c1997.txt
1147822 1997.0 12 31 22 40 289.0 7.2 mlrf1c1997.txt
1147823 1997.0 12 31 22 50 292.0 7.6 mlrf1c1997.txt
1147824 1997.0 12 31 23 0 296.0 7.7 mlrf1c1997.txt
Я пытаюсь изучить данные с помощью сводной таблицы, чтобы получить среднее направление и скорость в часовых срезах. Мне нужно применить округлую функцию Сципи к данным о направлении. Это требует указания высоких и низких аргументов для набора данных. Когда я пытаюсь это сделать, я получаю TypeError: объект 'numpy.float64' не вызывается.
df.pivot_table(values = ['direction'], index = ['day', 'hour'], aggfunc = circmean(df.direction, high=df.direction.max(), low=df.direction.min()))
df.pivot_table(values = ['direction'], index = ['day', 'hour'], aggfunc = circmean(df.direction, high=360, low=0))
Как я понимаю, для получения точных выводов Cirmean требует аргументов высокого и низкого аргументов. Когда я пытаюсь получить среднее значение показаний скорости ветра, используя np.mean, у меня нет трудностей:
df.pivot_table(values = ['speed'], index = ['day', 'hour'], aggfunc = np.mean)
Что дает:
speed
day hour
1 0 6.085055
1 6.144919
2 6.253006
3 6.315291
4 6.305656
5 6.241176
6 6.205701
Я также могу применить функцию Cirmean без параметров, например:
df.pivot_table(values = ['direction'], index = ['day', 'hour'], aggfunc = circmean)
Когда я делаю это, я получаю результаты, которые не могу интерпретировать (то есть они не находятся на 360 градусов):
direction
day hour
1 0 2.992024
1 3.414254
2 1.620715
3 0.463309
4 6.206874
5 1.451950
6 4.319550
Есть ли способ применить функцию и аргументы в параметре aggfunc pivot_table? Если нет, есть ли у кого-нибудь предложение о том, как мне получить циклические средства, которые мне нужны, из фрейма данных?