我有一个带有MultiIndex的pandas DataFrame。我想要一个包含MultiIndex level0
和level1
这样的[level0,[level1-1,level1-2,(...)]
的列表。
例如:
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
df = pd.DataFrame(np.random.randn(8), index=arrays,columns=['values'])
df
出:
values
bar one 2.171200
two -0.665047
baz one 0.474036
two 0.082408
foo one 1.820585
two 0.698537
qux one 1.163479
two 0.129044
我想输出这样的数据框:
output
bar ['one','two']
baz ['one','two']
foo ['one','two']
qux ['one','two']
怎么样?非常感谢。
最佳答案
将reset_index
与groupby
和list
一起使用:
df1 = (df.reset_index()
.groupby('level_0')['level_1']
.apply(list)
.rename_axis(None)
.to_frame('output'))
或
MultiIndex.to_frame
(熊猫0.20.0+中的新功能):df1 = df.index.to_frame().groupby(0)[1].apply(list).rename_axis(None).to_frame('output')
print (df1)
output
bar [one, two]
baz [one, two]
foo [one, two]
qux [one, two]
关于python - 如何以列表的形式获取 Pandas 的MultiIndex值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51478208/