如何在函数中引用pandas数据框对象?

时间:2018-01-20 17:44:07

标签: python function pandas dataframe

我觉得这应该非常简单,但我一直在犯错。我想创建一个函数,我可以在其中传递三个不同的数据框(temp_years_df,co2_emissions_df,energy_use_df)并在列上绘制趋势&#39 ;美国'在情节中使用不同的y标签:

%pylab inline
import seaborn as sns

def US_trends(df):
  US_plot=df.T['United States'].plot()
  plt.xlabel("Year")
  if df=temp_years_df:
      plt.ylabel("Number of People Affected by Extreme Temperatures")
  elif df=co2_emissions_df:
      plt.ylabel("CO2 Emissions")
  elif df=energy_use_df:
      plt.ylabel("Energy Use")
 return US_plot

US_trends(temp_years_df)

但这是我收到的错误:

 if df=temp_years_df:
      ^
SyntaxError: invalid syntax

我尝试了df==temp_years_df但它仍然无法正常工作。任何人都可以开导我吗?谢谢!

3 个答案:

答案 0 :(得分:2)

尝试使用pandas内置函数:

df1.equals(df2)

如果两者相等则返回True,否则返回False。

对于这个具体案例,请尝试:

if df.equals(temp_years_df):

答案 1 :(得分:1)

您实际上可以将属性设置为数据框。有关详细信息,请参阅Adding meta-information/metadata to pandas DataFrame

df.df_name = "ten_years"

然后你可以检查你的功能

if df.df_name == "ten_years":
    doSomething

答案 2 :(得分:0)

我不确定你要求的是什么,但是如果你需要提供一个标识符/标签来评估是否为你的输入运行特定逻辑,那么词典就是一种pythonic方式:

def US_trends(dfs, label):
    df = dfs[label]
    US_plot=df.T['United States'].plot()
    plt.xlabel("Year")
    if label == 'temp_years':
        plt.ylabel("Number of People Affected by Extreme Temperatures")
    else:
        plt.ylabel("Y-label")
    return US_plot

input_dfs = {'temp_years': temp_years_df}
US_trends(input_dfs, 'temp_years')