按对象将pandas组转换为多索引Datafram

2024-04-26 21:36:24 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有以下数据框

>>> 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)那样获取我的多索引数据帧,但是我得到了一个PandasError(“数据帧构造函数没有正确调用!”)。

最简单的方法是什么?另外,有人知道是否有一个选项可以将groupby对象传递给构造函数,或者我只是做错了?

谢谢


Tags: 数据方法namedfdestinationlengthbobgp