Python 在数据帧中删除特定的多索引列
假设有一个数据帧是这样创建的:Python 在数据帧中删除特定的多索引列,python,pandas,dataframe,hierarchical-data,multi-index,Python,Pandas,Dataframe,Hierarchical Data,Multi Index,假设有一个数据帧是这样创建的: tdata = {('A', 50): [1, 2, 3, 4], ('A', 55): [5, 6, 7, 8], ('B', 10): [10, 20, 30, 40], ('B', 20): [50, 60, 70, 80], ('B', 50): [2, 4, 6, 8], ('B', 55): [10, 12, 14, 16]} tdf = pd.DataFrame
tdata = {('A', 50): [1, 2, 3, 4],
('A', 55): [5, 6, 7, 8],
('B', 10): [10, 20, 30, 40],
('B', 20): [50, 60, 70, 80],
('B', 50): [2, 4, 6, 8],
('B', 55): [10, 12, 14, 16]}
tdf = pd.DataFrame(tdata, index=range(0,4))
A B
50 55 10 20 50 55
0 1 5 10 50 2 10
1 2 6 20 60 4 12
2 3 7 30 70 6 14
3 4 8 40 80 8 16
tdf.drop(['B',[10,20]])
?请注意,我知道我的命令示例与它应该是什么并不接近,但我希望它能够理解要点元组的列表:
print (tdf.drop([('B',10), ('B',20)], axis=1))
A B
50 55 50 55
0 1 5 2 10
1 2 6 4 12
2 3 7 6 14
3 4 8 8 16
对于按级别删除列
:
mask = tdf.columns.get_level_values(1) >= 50
print (mask)
[ True True False False True True]
print (tdf.loc[:, mask])
A B
50 55 50 55
0 1 5 2 10
1 2 6 4 12
2 3 7 6 14
3 4 8 8 16
如果需要按级别删除,请仅指定一个级别:
print (tdf.drop([50,55], axis=1, level=1))
B
10 20
0 10 50
1 20 60
2 30 70
3 40 80
你能解释更多吗即使10,20子级索引不存在,我能做一些包含列“A”的一般命令吗?或者我必须特别引用列“B”?
@jezrael谢谢你的提问。我想知道我是否可以做一些事情,比如通配符顶级的“A”和“B”,然后去寻找我不想要的子级别,比如tdf.drop([:,[10,20]])。我认为不可能,这是不可能的。仅按选择,但不删除。