整合熊猫数据框中的相似索引

时间:2019-11-01 00:17:22

标签: python pandas numpy scipy

我在循环熊猫数据框上的积分时遇到一些麻烦。这是我正在使用的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

继续返回错误,指出索引列“ NAME”旁边的列不在索引中。任何帮助,将不胜感激。为了澄清起见,我尝试以“ Int”为x轴获取K&Z列的积分,并返回名称和积分。我的实际CSV比这大得多。

1 个答案:

答案 0 :(得分:1)

我尝试了一下,希望对您有所帮助:-

从以上答案中我得出了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]))

我不确定您想要这种输出,但希望对您有所帮助。