我有以下数据框df
col1 col2 col3
a b a b a b
1 x1 x1 y11 y12 z11 z12
2 x2 x2 y21 y22 z21 z22
3 x3 x3 y31 y32 z31 z32
假设' a'和' b' col1是相同的。我想放弃整个级别的字母' (' a',' b'),但仅限于col1。我不想使用drop()来放弃' a'或者' b',如Dropping a single (sub-) column from a MultiIndex。
我想要从col1中删除级别,以获取
col1 col2 col3
a b a b
1 x1 y11 y12 z11 z12
2 x2 y21 y22 z21 z22
3 x3 y31 y32 z31 z32
答案 0 :(得分:0)
你走了。这是一个非常繁重的工作,但我不相信大熊猫自然支持多索引这种功能。我打破了所有步骤,更具体地展示了我如何得到结果,但你可以轻松地简化这一步。
import pandas as pd
import numpy as np
arrays = [np.array(['col1', 'col1', 'col2', 'col2', 'col3', 'col3']),
np.array(['a', 'b', 'a', 'b', 'a', 'b'])]
df = pd.DataFrame(np.random.randn(3, 6), columns=arrays)
df_part = df[df.columns[:2]]
df_part2 = df[df.columns[2:]]
df_part.columns.set_levels(['a', ''], level=1, inplace=True)
new_df = pd.concat([df_part, df_part2], axis=1)
result = new_df[new_df.columns[1:]]