【问题标题】:Python: Apply a function to multiple subsets of a dataframe (stored in a dictionary)Python:将函数应用于数据帧的多个子集(存储在字典中)
【发布时间】:2020-02-09 07:36:57
【问题描述】:

问候,

如果此问题与其他问题重复,我们深表歉意。但我可以找到一个答案,准确地解决我的问题。

我将一个名为“data”的数据帧拆分为多个子集,这些子集存储在名为“dfs”的数据帧字典中,如下所示:

# Partition DF

dfs = {}
chunk = 5

for n in range((data.shape[0] // chunk + 1)):
    df_temp = data.iloc[n*chunk:(n+1)*chunk]
    df_temp = df_temp.reset_index(drop=True)
    dfs[n] = df_temp

现在,我想将一个名为“fun_c”的预定义帮助函数应用于每个数据帧(存储在名为“dfs”的字典对象中)。

我一次将函数应用到dfs是否正确,如下(?):

result = fun_c(dfs)

如果不是,那么正确的做法是什么?

【问题讨论】:

  • 听起来你只想要一个用于单个数据帧的函数,你可以遍历数据帧,所以“fun_c(df)”对我来说更有意义。我建议只是尝试一下,也许问题会自己回答。

标签: python function dictionary


【解决方案1】:

这取决于您要查找的输出:

  • 如果您想在输出中使用 dict,则应将该函数应用于每个 dict 项
result = dict({key: fun_c(val) for key, val in dfs.items()})
  • 如果您想要输出中的数据帧/值列表,请将该函数应用于每个 dict 值
result = [fun_c(val) for val in dfs.items()]

但这种风格也没有错,你也可以在辅助函数中随心所欲地迭代:

def fun_c(dfs):

    result = None
    # either
    for key, val in dfs.items():
        pass
    # or
    for val in dfs.values():
        pass
    return result

如果这有帮助,请告诉我!

【讨论】:

    【解决方案2】:

    既然你想要这个:

    现在,我想应用一个名为 “fun_c”到每个数据帧(存储在字典中 名为“dfs”的对象)。

    假设您的数据框 dict 看起来像这样,而您的 helper 函数 接收单个数据框。

    dfs = {0 : df0, 1: df1, 2: df2, 3:df3}
    

    让我们遍历字典,对每个数据帧应用fun_c 函数,并将结果保存在另一个具有相同键的字典中:

    dfs_result = {k:fun_c[v] for k, v in dfs.items()}
    

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 2020-02-17
      • 1970-01-01
      • 2018-03-19
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      相关资源
      最近更新 更多