Python Ошибка вычисления интегральной функции в кадре данных - PullRequest
1 голос
/ 04 марта 2020

Я пытаюсь вычислить интеграл для поля Power в моем pandas кадре данных с полем отметки времени, который выглядит следующим образом:

          timestamp        Power
0        1582848000007  8284.714925
1        1582848000016  8514.845083
2        1582848000026  8518.174961
3        1582848000036  8512.624938
4        1582848000046  8514.845083
5        1582848000056  8518.174961
6        1582848000066  8512.624938
7        1582848000076  8512.624938
8        1582848000086  8512.624938
9        1582848000096  8509.295060
10       1582848000107  8512.624938
11       1582848000116  8512.624938
12       1582848000136  8518.174961
13       1582848000146  8514.845083
14       1582848000156  8514.845083
15       1582848000166  8512.624938
16       1582848000176  8518.174961
17       1582848000186  8514.845083
18       1582848000207  8512.624938
19       1582848000216  8514.845083
20       1582848000226  8514.845083
21       1582848000236  8514.845083
22       1582848000246  8512.624938
23       1582848000256  8514.845083
24       1582848000266  8514.845083
25       1582848000276  8514.845083
26       1582848000286  8518.174961
27       1582848000296  8512.624938
28       1582848000307  8514.845083
29       1582848000316  8131.295064

Это хранится в переменной df .

Код, который я использую, является правилом трапеции от scipy,

from scipy import integrate
df.apply(lambda g: integrate.trapz(g.Power, x=g.timestamp))

Я получаю ошибку:

Traceback (most recent call last):
  File "presto_run.py", line 17, in <module>
    I2=df1.apply(lambda g: integrate.trapz(g.Power, x=g.timestamp))
  File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 6487, in apply
    return op.get_result()
  File "/usr/local/lib/python2.7/dist-packages/pandas/core/apply.py", line 151, in get_result
    return self.apply_standard()
  File "/usr/local/lib/python2.7/dist-packages/pandas/core/apply.py", line 257, in apply_standard
    self.apply_series_generator()
  File "/usr/local/lib/python2.7/dist-packages/pandas/core/apply.py", line 286, in apply_series_generator
    results[i] = self.f(v)
  File "presto_run.py", line 17, in <lambda>
    I2=df1.apply(lambda g: integrate.trapz(g.Power, x=g.timestamp))
  File "/usr/local/lib/python2.7/dist-packages/pandas/core/generic.py", line 5067, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: ("'Series' object has no attribute 'Power'", u'occurred at index timestamp')

Что я делаю не так? ТИА!

1 Ответ

2 голосов
/ 04 марта 2020

Синтаксис integrate.trapz(y,x=None), где y и x подобны массиву. Итак, вы хотите сделать:

integrate.trapz(df.Power, x=df.timestamp)
# out: 2628206.221949

Также есть идентичная функция из numpy:

np.trapz(df.Power, x=df.timestamp)
# out: 2628206.221949
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...