python - 如何以列表的形式获取 pandas MultiIndex 的值?

标签 python list pandas

我有一个带有 MultiIndex 的 pandas DataFrame。我想得到一个包含 MultiIndex level0level1 的列表,就像这样 [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_indexgroupby列表:

df1 = (df.reset_index()
        .groupby('level_0')['level_1']
        .apply(list)
        .rename_axis(None)
        .to_frame('output'))

MultiIndex.to_frame ( Pandas 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/

相关文章:

Python pandas 到 groupby 数据框列并使用它们计算 Excel 工作表中的新列

python - 如何在打字时自动更正QLineEdit?

python - 如何解压列表?

c# - 当反射类型本身是 List 时实例化通用 c# List

python - 使用 pandas read_csv 读取标题时跳过 `# ` 字符

python - 如何像在 MATLAB 中一样在 Python 中创建数字范围

python - 基于pygame的引擎

c - 从文件分配列表时出现段错误

python - 从 pandas 数据框中的多行中提取非 nan 值

python - 当 A 列为 Null 时,确保 B 列 = 某个值 - Python