【问题标题】:Python function returning empty dataframePython函数返回空数据框
【发布时间】:2019-09-12 21:00:12
【问题描述】:

我想创建一个函数来使用其他数据帧和一些过滤器创建数据帧。我的问题:当我应用函数时,输出数据框是空的......但是当我编写没有循环和函数的代码时,它可以工作,我不明白,我试图改变返回位置,但这不起作用

首先我正在创建一个空数据框 -

df_Summary=pd.DataFrame(columns=['Country', 'population', 'average age', 'avg salary'])

然后我定义一个带有两个参数的函数 - 'df' & 'fieldname'。我正在使用带有字段名的关键字参数(使用星号 *)来过滤多个数据并将其附加到输出 df_Summary

  def make_summary(df,*fieldname):
            global df_Summary
            for dfname in df:
                for field in fieldname:
................df_Summary=df_Summary.append(df[df['Country']==fieldname].reset_index().iloc[:,1:7],sort=False)
            return df_Summary

df_Summary_1 = make_summary(df_Exp_Final_IWM,'China','USA')

df_Summary_1 以空数据框的形式出现。该函数应从国家“美国”和“中国”的 df 数据框中返回 2 行

【问题讨论】:

    标签: python function dataframe


    【解决方案1】:

    不确定您的目的。如果您想在 Country 列中选择包含“'USA' or 'China'”的行,您可以简单地执行:df[df["Country"].isin(["USA","China"])].

    【讨论】:

      【解决方案2】:

      请将下一行中的“文件名”改为“字段”。

      发件人:

      df_Summary=df_Summary.append(df[df['Country']==fieldname].reset_index().iloc[:,1:7],sort=False)
      

      到:

      df_Summary=df_Summary.append(df[df['Country']==field].reset_index().iloc[:,1:7])
      

      这应该可以解决您的问题(我删除了 sort=False,因为它抱怨附加没有“sort=False”)。

      【讨论】:

        猜你喜欢
        • 2018-04-26
        • 2018-01-16
        • 2017-10-14
        • 2020-08-29
        • 2019-02-04
        • 2018-04-02
        • 2017-09-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多