如何将函数应用于多个Pandas数据框?

8

我有多个数据框:

df1, df2, df3,..., dfn

他们拥有相同类型的数据,但来自无法合并的不同描述符组。现在我需要手动将相同的函数应用于每个数据框。
如何将相同的函数应用于多个数据框?
2个回答

8

pipe + 列表推导式

如果你的数据框包含相关数据,就像这个例子一样,你应该将它们存储在一个list中(如果数字排序足够),或者在一个dict中(如果你需要为每个数据框提供自定义标签)。然后,你可以通过列表推导式将每个数据框通过函数foo传递给pipe

列表示例

df_list = [df1, df2, df3]
df_list = [df.pipe(foo) for df in df_list]

然后通过 df_list[0], df_list[1] 等访问您的数据框。

字典示例

df_dict = {'first': df1, 'second': df2, 'third': df3}
df_dict = {k: v.pipe(foo) for k, v in df_dict.items()}

然后通过 df_dict['first']df_dict['second'] 等方式访问您的数据框。


6
如果数据框具有相同的列,您可以将它们concat 到单个数据框中,但如果列不同,则没有真正“智能”的方法来执行此操作:
df1, df2, df3 = (df.apply(...) for df in [df1, df2, df3]) # or either .map or .applymap

方法名称不是应该叫 applymap(而不是 mapapply)吗?我经常会忘记,但我的集成开发环境很少会漏掉这一点。 - Dilettant
我无法将数据框连接起来,因为它们是不同类型的数据,但所有的数据框都需要执行完全相同的工作流程。 - Naravut Suvannang
它不起作用,所以有什么问题吗?“def unique(df): df['bioactivity_type'].unique() df1, df2, df3 = (df.apply(unique) for df in [df1, df2, df3])”KeyError: ('bioactivity_type', u'occurred at index activity_comment') - Naravut Suvannang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接