gpt4 book ai didi

python - 从 MultiIndex 中删除单个(子)列

转载 作者:太空狗 更新时间:2023-10-30 02:46:01 25 4
gpt4 key购买 nike

我有以下数据框 df

    col1        col2        col3
a b a b a b
1 ...
2
3

并且无法弄清楚如何只删除一个“子级别”,例如df.col1.a

我可以df.col1.drop('a', axis=1),但像df.col1=df.col1.drop('a', axis= 1) 失败。

逻辑结构df.colums我明白了,但我应该如何修改它?

最佳答案

Drop是一种非常灵活的方法,有很多使用方法:

In [11]: mi = pd.MultiIndex.from_product([['col1', 'col2', 'col3'], ['a', 'b']])

In [12]: df = pd.DataFrame(1, index=[0], columns=mi)

In [13]: df
Out[13]:
col1 col2 col3
a b a b a b
0 1 1 1 1 1 1

使用元组删除单个列:

In [14]: df.drop(('col1', 'a'), axis=1)
Out[14]:
col1 col2 col3
b a b a b
0 1 1 1 1 1

或使用元组列表的列表:

In [15]: df.drop([('col1', 'a'), ('col2', 'b')], axis=1)
Out[15]:
col1 col2 col3
b a a b
0 1 1 1 1

或跨越一个级别,例如所有a:

In [16]: df.drop('a', level=1, axis=1)
Out[16]:
col1 col2 col3
b b b
0 1 1 1

在 0.14 中,您还可以传递要丢弃的内容的正则表达式...

还有一种方法可以删除索引/列的整个级别:

In [21]: df.columns.droplevel(1)
Out[21]: Index([u'col1', u'col1', u'col2', u'col2', u'col3', u'col3'], dtype='object')

关于python - 从 MultiIndex 中删除单个(子)列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22397058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com