我想使用一个函数来缩短我的Pandas库代码。我应该如何使用一个函数来缩短代码,并调用它的个别国家?
Scotland ='Scotland'
Finland = 'Finland'
sc = df.query("Area == @Scotland and Element == 'Import Quantity'")
fin = df.query("Area == @Finland and Element == 'Import Quantity'")
etc..
sc_v = df.query("Area == @Scotland and Element == 'Import Value'")
fin_v = df.query("Area == @Finland and Element == 'Import Value'")
etc..
有一堆使用函数(类)的教程,但没有一个展示如何在数据框架(df)的情况下使用它们。在这种情况下,我只是想避免重复and Element == 'Import Quantity'")
和and Element == 'Import Value'")
字符串,并且需要一种专业的方式来编写代码,因为有很多国家,我必须分析每个国家,并在最后合并和可视化。
我的代码不高级
您究竟想要什么尚不清楚,但对我们来说,程序化的选项可能是groupby
和字典理解:
# example input
df = pd.DataFrame({'Area': ['Scotland', 'Finland', 'Sweden', 'Scotland', 'Finland', 'Sweden'],
'Element': ['Import Quantity', 'Import Quantity', 'Import Quantity',
'Import Quantity', 'Import Value', 'Other'],
'Other': [1, 2, 3, 4, 5, 6]
})
# map suffixes
elem_grp = df['Element'].map({'Import Quantity': '', 'Import Value': '_v'})
# split dataframe
out = {f'{a.lower()[:3]}{e}': g for (a,e), g in
df.groupby(['Area', elem_grp])}
:
out['fin_v']
Area Element Other
4 Finland Import Value 5