Интеграция по сходным показателям в панде - PullRequest
0 голосов
/ 01 ноября 2019

У меня возникли проблемы с зацикливанием интеграла по кадру данных панд. Вот пример CSV, с которым я работаю:

NAME, Int, K, Z

A, 0,12,50

A, 1,34,50

A, 2,47,35

A, 3,19,31

B, 0,25,28

B, 1,8,3

B, 2,4,27

B, 3,18,10

C, 0,14,15

C,1,10,19

C, 2,46,1

C, 3,19,41

Вот цикл, который я пытаюсь:

def integral(DF):

    for i in DF.loc[:]:

       integral=integrate.trapz(y=DF.loc[i]['K'],x=DF.loc[i]['Int'],dx=1)

    return DF.loc[i] and integral

Продолжает возвращать сообщение об ошибке, сообщая, что столбец рядом с столбцом индекса «ИМЯ» отсутствует в индексе. Любая помощь будет оценена. Чтобы уточнить, я пытаюсь взять интегралы столбцов K & Z, где «Int» является осью X, и вернуть как имя, так и интеграл. Мой настоящий CSV намного больше, чем этот.

1 Ответ

1 голос
/ 01 ноября 2019

Я попробовал и надеюсь, что это может помочь вам немного: -

Сверху ответ я сделал dataframe

from io import StringIO
import numpy as integrate

s = """
NAME,Int,K,Z
A,0,12,50
A,1,34,50
A,2,47,35
A,3,19,31
B,0,25,28
B,1,8,3
B,2,4,27
B,3,18,10
C,0,14,15
C,1,10,19
C,2,46,1
C,3,19,41
"""
df = pd.read_csv(StringIO(s), sep=',')
print(df)

Вам также необходимо преобразовать в float виспользуйте numpy функциональность

df['Int'] = df['Int'].astype(float)
df['K'] = df['K'].astype(float)
df['Z'] = df['Z'].astype(float)
del df['NAME']

Вы передавали логическое возвращение, используйте commas вместо

def integral(DF):

    for i in DF.loc[:].values:  #use values instead
        print(i)
        integral=integrate.trapz(y=DF.loc[i],x=DF.loc[i],dx=1)

    return DF.loc[i], integral


integral(df)

>>
(      Int     K     Z
 3.0   3.0  19.0  31.0
 19.0  NaN   NaN   NaN
 41.0  NaN   NaN   NaN, array([476.,  nan,  nan]))

Я не уверен, что вам нужен такой вывод, но надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...