[英]Convert pandas group by object to multi-indexed Dataframe
如果我有以下Dataframe
>>> df = pd.DataFrame({'Name': ['Bob'] * 3 + ['Alice'] * 3, \
'Destination': ['Athens', 'Rome'] * 3, 'Length': np.random.randint(1, 6, 6)})
>>> df
Destination Length Name
0 Athens 3 Bob
1 Rome 5 Bob
2 Athens 2 Bob
3 Rome 1 Alice
4 Athens 3 Alice
5 Rome 5 Alice
我可以通過名字和目的地來集合......
>>> grouped = df.groupby(['Name', 'Destination'])
>>> for nm, gp in grouped:
>>> print nm
>>> print gp
('Alice', 'Athens')
Destination Length Name
4 Athens 3 Alice
('Alice', 'Rome')
Destination Length Name
3 Rome 1 Alice
5 Rome 5 Alice
('Bob', 'Athens')
Destination Length Name
0 Athens 3 Bob
2 Athens 2 Bob
('Bob', 'Rome')
Destination Length Name
1 Rome 5 Bob
但我希望一個新的多索引數據框看起來像
Length
Alice Athens 3
Rome 1
Rome 5
Bob Athens 3
Athens 2
Rome 5
似乎應該有一種方法可以做一些像Dataframe(grouped)
這樣的東西來獲取我的多索引Dataframe,但是我得到一個PandasError
(“DataFrame構造函數沒有被正確調用!”)。
最簡單的方法是什么? 此外,任何人都知道是否會有一個選項將groupby對象傳遞給構造函數,或者我是否只是做錯了?
謝謝
由於您沒有聚合類似的索引行,因此請嘗試使用列名列表設置索引。
In [2]: df.set_index(['Name', 'Destination'])
Out[2]:
Length
Name Destination
Bob Athens 3
Rome 5
Athens 2
Alice Rome 1
Athens 3
Rome 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.