【问题标题】:Applying same function on multiple pandas dataframe to get dataframes在多个熊猫数据帧上应用相同的函数来获取数据帧
【发布时间】:2019-01-17 19:32:56
【问题描述】:

我正在尝试将相同的函数应用于多个熊猫数据框,但结果是一个对象,而我需要数据框作为结果。我也尝试过使用“广播”,但这并没有太大帮助

以下是基本上为索引列分配名称的函数:

def assign_name(name_df):
  name_df.index.name="Fields"

& 我将其应用于唯一性和偏度数据帧,该数据帧基本上由每个字段和偏度的唯一值数量组成:

uniques,skewness = (df.apply(assign_name)for df in [uniques,skewness])

uniques & skewness的数据类型是object:

dtype: object

谁能帮我解决这个问题?

【问题讨论】:

  • 1.你不会从你的函数中返回任何东西; 2.你没有将 df 分配给任何东西(你没有腌制它,你没有将它插入到列表中,你没有将它存储在字典等中,你没有连接这两个数据框等)所以最后一个数据框覆盖第一个。

标签: python pandas apply


【解决方案1】:

使用pipe 并确保您的函数使用return

def assign_name(name_df):
    name_df.index.name="Fields"
    return df

uniques, skewness = (df.pipe(assign_name)for df in [uniques,skewness])

【讨论】:

    【解决方案2】:
    def assign_name(x):
      x.index.name="Fields"
      return x
    
    ll = [type(x) for x in [assign_name(df) for df in [df1, df2]]
    print(ll)
    

    【讨论】:

      【解决方案3】:

      函数保持不变只是添加了一个返回: def 分配名称(名称_df): name_df.index.name="字段" 返回(名称_df) 将所有数据帧存储为列表并在列表中应用函数:
      list_df = [独特,偏度,df1_transposed,coltypes] list_df = [df.pipe(assign_name) for df in list_df] 像访问列表元素一样访问每个数据框: list_df[3]

      【讨论】:

        猜你喜欢
        • 2018-12-25
        • 1970-01-01
        • 2016-09-15
        • 2018-08-18
        • 1970-01-01
        • 1970-01-01
        • 2017-10-15
        • 2019-07-29
        • 1970-01-01
        相关资源
        最近更新 更多