Как быстро применить функцию в списке DataFrame в Python? - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть список DataFrames с одинаковой длиной столбцов и строк, но с разными значениями, например data = [df1, df2, df3 .... dfn]. Как я могу применить функцию-функцию к каждому фрейму данных в списке данных? Я использовал следующий код, но он не работает

data = [df1, def2,df3.... dfn]
    def maxloc(data):

        data['loc_max'] = np.zeros(len(data)) 

        for i in range(1,len(data)-1):  #from the second value on
            if data['q_value'][i] >= data['q_value'][i-1] and data['q_value'][i] >= data['q_value'][i+1]:
                data['loc_max'][i] = 1
        return data
    df_list = [df.pipe(maxloc) for df in data]

1 Ответ

0 голосов
/ 02 апреля 2020

Мне кажется, проблема в вашей функции maxlo c (), так как этот код работает. Я добавил также максимальное значение в возвращении maxlo c.

from random import randrange
import pandas as pd


def maxloc(data_frame):
    max_index = data_frame['Value'].idxmax(0)
    maximum = data_frame['Value'][max_index]
    return max_index, maximum


# create test list of data-frames
data = []
for i in range(5):
    temp = []
    for j in range(10):
        temp.append(randrange(100))
    df = pd.DataFrame({'Value': temp}, index=(range(10)))
data.append(df)


df_list = [df.pipe(maxloc) for df in data]

for i, (index, value) in enumerate(df_list):
    print(f"Data-frame {i:02d}: maximum = {value} at position {index}")
...