我是python的新手,我对如何将多索引级别添加到DataFrame有疑问。 例如,我有像这样的DataFrame
如何将名为“group”的列添加到DataFrame multiindex中,如下所示
谢谢
答案 0 :(得分:0)
以下是向DataFrame索引添加新关卡的两种方法:
使用pd.MultiIndex.from_arrays
构建新索引:
import pandas as pd
df = pd.DataFrame({'val':[1,2,3]})
df.index = pd.MultiIndex.from_arrays([df.index, ['A','B','C']],
names=['id','group'])
print(df)
产量
val
id group
0 A 1
1 B 2
2 C 3
pd.MultiIndex.from_product
和pd.MultiIndex.from_tuples
也可以提供帮助
你建立新的MultiIndex
- 使用哪个取决于你的输入是什么样的。
请注意,MultiIndex
不可变 - 您无法向现有MultiIndex
添加新关卡。要更改DataFrame的索引,只需为DataFrame的index
属性指定一个新索引即可。 See also the docs有关MultiIndex
s。
使用set_index
将列值移动到索引中:
import pandas as pd
df = pd.DataFrame({'group':['A','B','C'],'val':[1,2,3]})
# group val
# 0 A 1
# 1 B 2
# 2 C 3
df = df.set_index(['group'], append=True)
print(df)
产量
val
group
0 A 1
1 B 2
2 C 3
在这两种方法中,reassigning the index is generally faster比调用set_index
。