使用
as_index=False
当指定
groupby
。
我相信这个错误是由设置和重置一个空的
MultiIndex
(
子句
设置
多指标
,然后重置它)。见
#19602
在Github问题跟踪程序上。使用
作为索引=假
防止出现此模式,因为
多指标
不会被安排的
子句
首先。
In [2]: pd.__version__
Out[2]: '0.23.0'
In [3]: df = pd.DataFrame(columns=['field1','field2','field3','num1','num2'])
...: df = df.astype({'num1': 'float64', 'num2': 'float64'})
In [4]: df.dtypes
Out[4]:
field1 object
field2 object
field3 object
num1 float64
num2 float64
dtype: object
In [5]: dfGrouped = df.groupby(['field1','field2'], as_index=False)[['num1','num2']].sum()
In [6]: dfGrouped.dtypes
Out[6]:
field1 object
field2 object
num1 float64
num2 float64
dtype: object
请注意,这也应保留非空数据帧的行为:
In [7]: df = pd.DataFrame({'field1': list('aaaa'),
...: 'field2': list('0101'),
...: 'field3': list('wxyz'),
...: 'num1': [0.0, 1.0, 2.0, 3.0],
...: 'num2': [10.0, 11.0, 12.0, 13.0]})
In [8]: df
Out[8]:
field1 field2 field3 num1 num2
0 a 0 w 0.0 10.0
1 a 1 x 1.0 11.0
2 a 0 y 2.0 12.0
3 a 1 z 3.0 13.0
In [9]: dfGrouped = df.groupby(['field1','field2'], as_index=False)[['num1','num2']].sum()
In [10]: dfGrouped.dtypes
Out[10]:
field1 object
field2 object
num1 float64
num2 float64
dtype: object
In [11]: dfGrouped
Out[11]:
field1 field2 num1 num2
0 a 0 2.0 22.0
1 a 1 4.0 24.0