0
出於演示的目的,第一,我定義了幾個簡單的dataframes的,df0
和df1
:不一致的行爲.agg(LEN)`
>>> import pandas as pd
>>> import collections as co
>>> data = [['a', 1],
... ['b', 2],
... ['a', 3],
... ['b', 1],
... ['a', 2],
... ['a', 3],
... ['b', 1]]
>>> colnames = tuple('XY')
>>> df0 = pd.DataFrame(co.OrderedDict([(colnames[i],
... [row[i] for row in data])
... for i in range(len(colnames))]))
>>> df0
X Y
0 a 1
1 b 2
2 a 3
3 b 1
4 a 2
5 a 3
6 b 1
>>>
>>> df1 = df0.ix[:, [0]]
>>> df1
X
0 a
1 b
2 a
3 b
4 a
5 a
6 b
現在,這裏的結果分組對的df0
所有列,並與len
聚合爲聚合函數:
>>> df0.groupby(['X', 'Y']).agg(len)
X Y
a 1 1
2 1
3 2
b 1 2
2 1
dtype: int64
在此基礎上,我預計爲0的類似操作,即df1.groupby(['X']).agg(len)
,將使這樣的:
X
a 4
b 3
dtype: int64
但是,這不是發生了什麼:
>>> df1.groupby(['X']).agg(len)
Empty DataFrame
Columns: []
Index: [a, b]
我的問題是:
- 在行爲上的東西這個區別,我可以期待在一些熊貓文檔的基礎上,還是熊貓的錯誤? (如果前者是這種情況,請將我指向相關文檔。)
- 從
df1.groupby(['X']).agg(len)
獲得我期望的輸出(如上所示)的最簡單方法是什麼?
在#2中獲得所需內容的最簡單方法可能是數據透視表。重置索引,然後使用df1.pivot_table(index ='X',values ='index',aggfunc = len) – DataSwede 2014-09-10 18:40:00