我怀疑这是我的问题的更简单形式here https://stackoverflow.com/questions/18518077/why-does-pandas-groupby-cut-give-different-form-of-output-with-single-record-inp。 [更新:不幸的是并非如此。]
如果你这样做(在 Pandas 0.11 中):
df = pd.DataFrame([[1,2],[1,3],[2,4]],columns='a b'.split())
print df
g = df.groupby('a').count()
print type(g)
print g
你会得到预期的结果:
a b
0 1 2
1 1 3
2 2 4
<class 'pandas.core.frame.DataFrame'>
a b
a
1 2 2
2 1 1
但如果只有一个结果组,您会得到一个非常奇怪的系列:
df = pd.DataFrame([[1,2],[1,3],[1,4]],columns='a b'.split())
...
a b
0 1 2
1 1 3
2 1 4
<class 'pandas.core.series.Series'>
a
1 a 3
b 3
Name: 1, dtype: int64
但我宁愿结果是一个与此等效的 DataFrame:
print pd.DataFrame([[3,3]],index=pd.Index([1],name='a'),columns='a b'.split())
a b
a
1 3 3
我对如何轻松地从该系列中获得这一点感到困惑(并且不确定为什么我首先会得到它)。