我觉得这应该非常简单,但我一直在犯错。我想创建一个函数,我可以在其中传递三个不同的数据框(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
但它仍然无法正常工作。任何人都可以开导我吗?谢谢!
答案 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')