将函数应用于多个数据框列

时间:2015-10-09 09:29:01

标签: python csv pandas dataframe

我有一个带有一列(R)和30列(I 1:1 30)的csv文件。

我写了一个叫做' R'和' I 1'如下x_data和y_data:

df1 = pd.DataFrame.from_csv(filepath, index_col = None)

x_data = df1['R']
y_data = df1['I 1']

def find_peaks(grad):
    peaks=[]                                    
    i = 0                                        
    while i < len(grad[:-1]):                   
        if grad[i] > 0:                         
            start = i                           
            peak_index = find_peak(start, grad) 
            end = find_end(peak_index, grad)    
            area = np.trapz(y_data[start:end], x_data[start:end]) 
            peaks.append((x_data[peak_index], y_data[peak_index], area))  
            i = end - 1                  
        else:
            i+=1                              
    return peaks

此功能可找到峰值并返回其峰值区域。

我怎么能将这30个不同的我作为y_data运行,但使用相同的&#39; R&#39;作为x_data

1 个答案:

答案 0 :(得分:2)

您可以将x_datay_data作为函数的参数,然后从1到30循环,将函数应用于每个I <num列&gt;。示例 -

df1 = pd.DataFrame.from_csv(filepath, index_col = None)

def find_peaks(grad, x_data, y_data):
    ...
    ...

for i in range(1,31):
    result = find_peaks(grad,df1['R'], df1['I {}'.format(i)])
    #Do whatever you want with the result
相关问题