使用不同的字符串重复脚本 - Python
Repeat script with different string - Python
我有一个包含多个国家/地区的数据框;
Date Qatar Norway . . .
01/01/2004 43 33
.
.
.
31/12/2021 32 32 . . .
我需要每一列都是它自己的数据框,并且在一个数据透视表 table 中,这很好,我正在使用以下内容;
Qatar = df[['Date', 'Qatar']]
Qatar['Date']= pd.to_datetime(Qatar['Date'])
Qatar = Qatar.groupby([Qatar.Date.dt.year,Qatar.Date.dt.month]).mean()
Qatar = Qatar.unstack()
Qatar = Qatar/1745
Qatar = Qatar.round()
Cell('Exports_Country','D3').df = Qatar
我有 40 多个国家,有什么办法可以不用手动编写上面的国家列表吗??
我试过这个;
df1 = pd.melt(df, 'Date', var_name='country', value_name='val')
df1['Date']= pd.to_datetime(df1['Date'])
df2 = (df1.groupby(['country', df1.Date.dt.year,df1.Date.dt.month])['val']
.mean()
.unstack()
.div(1745)
.round())
但不幸的是,它提取的原始数据变化很大,因此代码需要足够动态才能被国家名称引用。
感谢任何帮助!
第一级和第三级使用Series.unstack
:
df1 = pd.melt(df, 'Date', var_name='country', value_name='val')
df1['Date']= pd.to_datetime(df1['Date'])
df2 = (df1.groupby(['country', df1.Date.dt.year,df1.Date.dt.month])['val']
.mean()
.unstack([0,2])
.div(1745)
.round())
print (df2)
country Norway Qatar
Date 1 12 1 12
Date
2004 0.0 NaN 0.0 NaN
2021 NaN 0.0 NaN 0.0
如此可能 select 列的名称:
Qatar = df2[['Qatar']]
print (Qatar)
country Qatar
Date 1 12
Date
2004 0.0 NaN
2021 NaN 0.0
我有一个包含多个国家/地区的数据框;
Date Qatar Norway . . .
01/01/2004 43 33
.
.
.
31/12/2021 32 32 . . .
我需要每一列都是它自己的数据框,并且在一个数据透视表 table 中,这很好,我正在使用以下内容;
Qatar = df[['Date', 'Qatar']]
Qatar['Date']= pd.to_datetime(Qatar['Date'])
Qatar = Qatar.groupby([Qatar.Date.dt.year,Qatar.Date.dt.month]).mean()
Qatar = Qatar.unstack()
Qatar = Qatar/1745
Qatar = Qatar.round()
Cell('Exports_Country','D3').df = Qatar
我有 40 多个国家,有什么办法可以不用手动编写上面的国家列表吗??
我试过这个;
df1 = pd.melt(df, 'Date', var_name='country', value_name='val')
df1['Date']= pd.to_datetime(df1['Date'])
df2 = (df1.groupby(['country', df1.Date.dt.year,df1.Date.dt.month])['val']
.mean()
.unstack()
.div(1745)
.round())
但不幸的是,它提取的原始数据变化很大,因此代码需要足够动态才能被国家名称引用。
感谢任何帮助!
第一级和第三级使用Series.unstack
:
df1 = pd.melt(df, 'Date', var_name='country', value_name='val')
df1['Date']= pd.to_datetime(df1['Date'])
df2 = (df1.groupby(['country', df1.Date.dt.year,df1.Date.dt.month])['val']
.mean()
.unstack([0,2])
.div(1745)
.round())
print (df2)
country Norway Qatar
Date 1 12 1 12
Date
2004 0.0 NaN 0.0 NaN
2021 NaN 0.0 NaN 0.0
如此可能 select 列的名称:
Qatar = df2[['Qatar']]
print (Qatar)
country Qatar
Date 1 12
Date
2004 0.0 NaN
2021 NaN 0.0