繁体   English   中英

如何创建具有多个级别 0 的多索引列的 Pandas dataframe?

[英]How to create a Pandas dataframe with multiindex columns with several level 0?

我想构建一个 dataframe 在列中有多个索引。 必须有两个级别,如下例所示(0 和 1),但级别 0 route分配给第 1 列和第 2 列,级别 0 action分配给第 3 列。

我怎样才能做到这一点?

在此示例中,我可以将 0 级route分配给第 1、2 和 3 列:

indexes = pd.MultiIndex.from_tuples([['paris']], names=['name'])
columns = pd.MultiIndex.from_product([['route'], ['type', 'action src', 'action dst']], names=['first', 'second'])
df = pd.DataFrame([[2, 3, 4]], index=indexes, columns=columns)
df

first   route
second  type    action src  action dst
name            
paris   2   3   4

但所需的输出是这样的:

first   route   action
second  type    source  destination
name            
paris   2   3   4

我不确定这个问题的标题是否恰当,所以请随意给它一个更合适的标题。

您可以使用pandas.MultiIndex.from_arrays()

import pandas as pd

indexes = pd.MultiIndex.from_tuples([['paris']], names=['name'])
columns = pd.MultiIndex.from_arrays([['route', 'action', 'action'], ['type', 'source', 'destination']], names=['first', 'second'])

df = pd.DataFrame([[2, 3, 4]], index=indexes, columns=columns)

print(df)
first  route action            
second  type source destination
name                           
paris      2      3           4

只需使用pandas.MultiIndex.from_arrays()

col = pd.MultiIndex.from_arrays([['route', 'action', 'action'], ['type', 'source', 'destination']], names=['first', 'second'])

最后:

df.columns=col

现在,如果您打印df ,您将获得所需的 output:

first   route   action
second  type    source  destination
name            
paris   2           3       4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM