Python 2.7 熊猫获得平均列名和额外的字符串列

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

在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,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的清晰解释。在开发本主题中的代码时,我还遇到了另一个挑战。你能帮我吗?我完全同意!