我正在阅读Wes Mckinney撰写的“Python for Data Analysis”一书。有一次,我们有这个:
by_tz_os = cframe.groupby(['tz', operating_system])
agg_counts = by_tz_os.size().unstack().fillna(0)
我试图通过以下方式理解 by_tz_os.size()系列的结构:
print 'Name is:', by_tz_os.size().name
print 'Index is:', by_tz_os.size().index.name
print by_tz_os.size()[:5]
结果如下:
Name is: None
Index is: None
tz
Not Windows 245
Windows 276
Africa/Cairo Windows 3
Africa/Casablanca Windows 1
Africa/Ceuta Windows 2
dtype: int64
这三个列(col1,col2,col3,让我们说)在系列上下文中是什么?我在想col1& col2是索引,但上述结果并非如此。我糊涂了。
答案 0 :(得分:2)
解释了DataFrame.groupby().size()
的结果here。相关部分:
另一个简单的聚合示例是计算每个的大小 组。这包含在GroupBy中作为size方法。它返回一个 索引为组名称且其值为大小的系列 每个小组。
In [54]: grouped.size() Out[54]: A B bar one 1 three 1 two 1 foo one 2 three 1 two 2 dtype: int64
关于
print 'Name is:', by_tz_os.size().name
print 'Index is:', by_tz_os.size().index.name
产生
Name is: None
Index is: None
正如您已经提到的,by_tz_os.size()
是一个系列。例如,与cframe["tz"]
属性设置为&{34; tz"的name
系列不同,by_tz_os.size()
没有附加名称,大多数可能是由于没有明显的方法来命名groupby()结果一般。当然,这就是by_tz_os.size().name
None
为何的原因。
by_tz_os.size().index.name
仅返回None
,因为索引是MultiIndex。您应该使用names
代替(顺便说一下,它适用于普通索引和MultiIndex)。