Python groupby无法转换为标量索引
我有一个数据帧df,包含以下列: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
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版本。