各位大神好,我是初学pandas小白,数据如图是个多重索引数据:
我想用DataFrame.drop()删除倒数第2个券商的所有数据,按照columns标签删除就是:
df.drop(columns="南京证券",level=0, inplace = True)
但是我想按位置删除,比如删除倒数第2个券商(南京证券)的所有数据,写了一段复杂的代码:
import pandas as pd
df = pd.read_excel(f"{work_dir}/券商简单数据.xlsx")
lst1 = []
for x in df.columns:
lst1.append(x[0])
ser = pd.Series(lst1)
ser.drop_duplicates(inplace = True)
df_new= df.drop(columns=ser.iloc[-2],level=0)
求助各位大神,有没有更简单的方法实现?
pd.iloc[]
不行,level=0的columns标签都是重复三次出现的,所以直接.iloc[-2],还是最后的“中金公司”标签
刚有大神回复了这个方法:
先用df.columns.levels
获取level=0
的列,再从获取的列中选择需要删除的。
df.drop(columns=df.columns.levels[0][-2])
但是我刚试过了,用df.columns.levels
获取level=0
的列得到的是重新排过顺序得列表,还是没法实现
cols = [3,7,10,12,14,16,18,20,22]
df.drop(df.columns[cols],axis=1,inplace=True)
删除指定的列