【问题标题】:How to apply function to multiple pandas dataframe如何将函数应用于多个熊猫数据框
【发布时间】:2018-12-20 01:49:01
【问题描述】:

我有多个数据框:

df1, df2, df3,..., dfn

它们具有相同类型的数据,但来自无法连接的不同描述符组。现在我需要手动对每个数据框应用相同的功能。

如何将相同的函数应用于多个数据帧?

【问题讨论】:

    标签: python function pandas dataframe


    【解决方案1】:

    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'] 等访问您的数据帧。

    【讨论】:

      【解决方案2】:

      如果数据框具有相同的列,您可以 concat 将它们添加到单个数据框,否则就没有真正的“智能”方式:

      df1, df2, df3 = (df.apply(...) for df in [df1, df2, df3]) # or either .map or .applymap
      

      【讨论】:

      • 方法名不是applymap(而不是mapapply)吗?我经常忘记自己,但我的 IDE 很少 ;-)
      • 我无法“连接”数据帧,因为它们是不同类型的数据,但所有数据帧都需要执行完全相同的工作流程。
      • 它不起作用,所以有什么问题 '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')
      猜你喜欢
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 2019-02-07
      • 2014-07-04
      • 2013-08-10
      相关资源
      最近更新 更多