Python:将函数应用于数据帧的多个子集(存储在字典中)



问候,

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

我将一个名为"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)

如果没有,正确的方法是什么?

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

  • 如果您希望在输出中有一个字典,则应将该函数应用于每个字典项
result = dict({key: fun_c(val) for key, val in dfs.items()})
  • 如果需要输出中的数据帧/值列表,请将函数应用于每个字典值
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

让我知道这是否有帮助!

既然你想要这个:

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

假设您的数据帧字典如下所示,并且您的帮助程序函数接收单个数据帧。

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

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

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

最新更新