Python 2.7 熊猫获得平均列名和额外的字符串列
在0.18.1、python 2.7.6中: 假设我们有下表:Python 2.7 熊猫获得平均列名和额外的字符串列,python-2.7,pandas,mean,Python 2.7,Pandas,Mean,在0.18.1、python 2.7.6中: 假设我们有下表: ID,FROM_YEAR,FROM_MONTH,AREA 1,2015,1,200 1,2015,2,200 1,2015,3,200 1,2015,4,200 1,2015,5,200 1,2015,6,200 1,2015,7,200 1,2015,8,200 1,2015,9,200 1,2015,10,200 1,2015,11,200 1,2015,12,200 1,2016,1,100 1,2016,2,100 1,20
ID,FROM_YEAR,FROM_MONTH,AREA
1,2015,1,200
1,2015,2,200
1,2015,3,200
1,2015,4,200
1,2015,5,200
1,2015,6,200
1,2015,7,200
1,2015,8,200
1,2015,9,200
1,2015,10,200
1,2015,11,200
1,2015,12,200
1,2016,1,100
1,2016,2,100
1,2016,3,100
1,2016,4,100
1,2016,5,100
1,2016,6,100
1,2016,7,100
1,2016,8,100
1,2016,9,100
1,2016,10,100
1,2016,11,100
1,2016,12,100
我们正试图得到以下格式的日历年平均值
ID,FROM_YEAR,TYPE,AREA
1,2015,A,200
1,2016,A,100
1,2015,B,200
1,2016,B,100
注意:类型是用于其他信息的字符串列。这里我们只有两种类型的“类型”:“A”和“B”
如果我们尝试以下操作,“AREA”列名称将丢失,并且ID=1仅在第一种情况下显示
AREA_CY=df.groupby(['ID','FROM_YEAR'])['AREA'].mean()
它返回:
ID,FROM_YEAR,
1,2015,200
,2016,100
,2015,200
,2016,100
TypeError: mean() got an unexpected keyword argument 'axis'
如果我们尝试以下方法:
AREA_CY=df.groupby(['ID','FROM_YEAR'])['AREA'].mean(axis=1)
它返回:
ID,FROM_YEAR,
1,2015,200
,2016,100
,2015,200
,2016,100
TypeError: mean() got an unexpected keyword argument 'axis'
任何古鲁都能开悟吗?谢谢 试试这个:
In [102]: x = df.groupby(['ID','FROM_YEAR'])['AREA'].mean().reset_index(name='AREA')
In [103]: y = pd.DataFrame({'TYPE':['A','B']})
In [104]: x
Out[104]:
ID FROM_YEAR AREA
0 1 2015 200
1 1 2016 100
In [105]: y
Out[105]:
TYPE
0 A
1 B
In [106]: x.assign(key=0).merge(y.assign(key=0), on='key').drop('key', 1)
Out[106]:
ID FROM_YEAR AREA TYPE
0 1 2015 200 A
1 1 2015 200 B
2 1 2016 100 A
3 1 2016 100 B
说明:
让我们对x
和y
DFs进行一次(也称为完全外部连接):
In [126]: x.assign(key=0)
Out[126]:
ID FROM_YEAR AREA key
0 1 2015 200 0
1 1 2016 100 0
In [127]: y.assign(key=0)
Out[127]:
TYPE key
0 A 0
1 B 0
In [128]: x.assign(key=0).merge(y.assign(key=0), on='key')
Out[128]:
ID FROM_YEAR AREA key TYPE
0 1 2015 200 0 A
1 1 2015 200 0 B
2 1 2016 100 0 A
3 1 2016 100 0 B
谢谢你能简要解释一下这句话吗?x、 赋值(key=0)。合并(y.assign(key=0),on='key')。删除('key',1)。感谢#MaxU的清晰解释。在开发本主题中的代码时,我还遇到了另一个挑战。你能帮我吗?我完全同意!