Python groupby无法转换为标量索引

Python groupby无法转换为标量索引,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个数据帧df,包含以下列: id int64 quarter datetime64[ns] decile int64 dtype: object 当我运行groupby时 df.groupby(['id', 'quarter']) 我得到以下错误: TypeError: only integer scalar arrays can be converted to a scalar index 我认为正确的问题是:dty

我有一个数据帧df,包含以下列:

id                  int64
quarter    datetime64[ns]
decile              int64
dtype: object
当我运行groupby时

df.groupby(['id', 'quarter'])
我得到以下错误:

TypeError: only integer scalar arrays can be converted to a scalar index
我认为正确的问题是:
dtypes
输出没有告诉我什么,这样我实际上可以使用我的
int
datetime
作为索引

versions:
pandas: 0.25.1
python: sys.version_info(major=3, minor=7, micro=3, releaselevel='final', serial=0)
关于错误的附加观察:如果我事先避免重命名列,错误就会消失。当我运行
dtypes
方法时,重命名成功

最后,这里是另一个在
groupby
和重命名后出现相同错误的示例(在本例中,重命名很愚蠢,但当我在聚合中包含
date
时需要重命名;我只显示生成错误所需的最小代码)


感谢任何可能知道这一点的人。

我试图重现您的错误,但没有成功

我创建的源数据帧为:

   id    quarter  decile
0   1 2019-01-01       5
1   1 2019-01-01       6
2   2 2019-04-01       1
3   2 2019-04-01       2
4   2 2019-07-01       3
5   2 2019-07-01       4
(使用与您描述的相同的数据类型)

我试着将单独分组,正如您在评论中所说:

gr = df.groupby(['id', 'quarter'])
并且没有发生错误

为了测试结果,我计算了各组的平均值:

gr.mean()
for key, grp in gr:
    print(f'\nGroup: {key}\n{grp}')
获取:

               decile
id quarter           
1  2019-01-01     5.5
2  2019-04-01     1.5
   2019-07-01     3.5
Group: (1, Timestamp('2019-01-01 00:00:00'))
   id    quarter  decile
0   1 2019-01-01       5
1   1 2019-01-01       6

Group: (2, Timestamp('2019-04-01 00:00:00'))
   id    quarter  decile
2   2 2019-04-01       1
3   2 2019-04-01       2

Group: (2, Timestamp('2019-07-01 00:00:00'))
   id    quarter  decile
4   2 2019-07-01       3
5   2 2019-07-01       4
作为另一项测试,我打印了每组的内容:

gr.mean()
for key, grp in gr:
    print(f'\nGroup: {key}\n{grp}')
获取:

               decile
id quarter           
1  2019-01-01     5.5
2  2019-04-01     1.5
   2019-07-01     3.5
Group: (1, Timestamp('2019-01-01 00:00:00'))
   id    quarter  decile
0   1 2019-01-01       5
1   1 2019-01-01       6

Group: (2, Timestamp('2019-04-01 00:00:00'))
   id    quarter  decile
2   2 2019-04-01       1
3   2 2019-04-01       2

Group: (2, Timestamp('2019-07-01 00:00:00'))
   id    quarter  decile
4   2 2019-07-01       3
5   2 2019-07-01       4
因此,正如您所看到的,对于“正常”(如上所示)源数据,不会发生错误

也许您有一些较旧版本的Python或Pandas?
升级到当前版本并重复您的测试。

您是从df.groupby(['id','quarter'])中得到该错误还是在groupby之后抛出该错误的行有其他链接?我看不出groupby有什么固有的错误;只有
groupby
。值得一提的是,仅按
id
进行分组也会发生错误。请提供一个发生此错误的DataFrame示例(可能大小最小),以及您使用的Python和Panda版本。