首页 > 解决方案 > 如何在 Python 中的 DataFrame 列表中快速应用函数?

问题描述

我有一个列和行长度相等但值不同的 DataFrame 列表,例如 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]

标签: python-3.xpandaspython-2.7scipypandas-groupby

解决方案


在我看来,问题出在您的 maxloc() 函数中,因为此代码有效。我还在 maxloc 的返回中添加了最大值。

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}")

推荐阅读