删除多索引级别但保留列名 - pandas
drop multiindex level but keep names of columns - pandas
我有一个 df
看起来像这样
a b c
c1 c2
0 87 33 32 34
1 32 10 45 62
2 78 83 99 71
我想删除 c
级别但保留所有其他列名称
a b c1 c2
0 87 33 32 34
1 32 10 45 62
2 78 83 99 71
df.columns = df.columns.droplevel(0)
有效,但 a
和 b
的名称消失了
c1 c2
0 87 33 32 34
1 32 10 45 62
2 78 83 99 71
我想你可以使用 set_index
+ droplevel
+ reset_index
:
df = df.set_index(['a','b'])
df.columns = df.columns.droplevel(0)
df = df.reset_index()
print (df)
a b c1 c2
0 87 33 32 34
1 32 10 45 62
2 78 83 99 71
select 列的另一个解决方案 ['c']
:
df = df.set_index(['a','b'])['c'].reset_index()
print (df)
a b c1 c2
0 87 33 32 34
1 32 10 45 62
2 78 83 99 71
但如果从 pivot_table
获取 则删除 []
或添加参数 values='c'
如果缺少。
我有一个 df
看起来像这样
a b c
c1 c2
0 87 33 32 34
1 32 10 45 62
2 78 83 99 71
我想删除 c
级别但保留所有其他列名称
a b c1 c2
0 87 33 32 34
1 32 10 45 62
2 78 83 99 71
df.columns = df.columns.droplevel(0)
有效,但 a
和 b
的名称消失了
c1 c2
0 87 33 32 34
1 32 10 45 62
2 78 83 99 71
我想你可以使用 set_index
+ droplevel
+ reset_index
:
df = df.set_index(['a','b'])
df.columns = df.columns.droplevel(0)
df = df.reset_index()
print (df)
a b c1 c2
0 87 33 32 34
1 32 10 45 62
2 78 83 99 71
select 列的另一个解决方案 ['c']
:
df = df.set_index(['a','b'])['c'].reset_index()
print (df)
a b c1 c2
0 87 33 32 34
1 32 10 45 62
2 78 83 99 71
但如果从 pivot_table
获取 []
或添加参数 values='c'
如果缺少。