Python 数据帧中相似索引的积分

Python 数据帧中相似索引的积分,python,pandas,numpy,scipy,Python,Pandas,Numpy,Scipy,我在数据帧上循环积分时遇到了一些问题。以下是我正在使用的CSV示例: 名称,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=int

我在数据帧上循环积分时遇到了一些问题。以下是我正在使用的CSV示例:

名称,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

不断返回一个错误,表示索引列“NAME”旁边的列不在索引中。任何帮助都将不胜感激。为了澄清这一点,我试图获取以“Int”为x轴的K&Z列的积分,并返回name和integral。我的实际CSV比这个大得多。

我尝试过,希望这能对您有所帮助:-

根据上面的回答,我制作了
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']
如果要传递布尔返回,请改用逗号

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]))
我不确定您是否需要这种输出,但希望这能有所帮助