Pandas DataFrame 删除指定列
2020-03-04 本文已影响0人
王叽叽的小心情
函数的官方文档为:Pandas.DataFrame.drop
函数:DataFrame.drop(self, labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
方法:从行或列中删除指定的标签。通过指定标签名和相应的轴,或者直接指定索引名或列名,删除行或列。使用多索引时,可以通过指定级别来删除不同级别的标签。
参数值:
- labels: 单个数值或者是列表形式,行的索引或者是列的标签
- axis{0 or ‘index’, 1 or ‘columns’}:默认为0删除行,当需要删除列时需设置为1
- index:单个标签或者是类似列表,当axis=0时相当于index=labels
- columns: 单个标签或者是类似列表,当axis=0时相当于columns=labels
- level: 整数或者是level name,针对多重索引(MultiIndex),指明标签需要被移除的层级level
- inplace:布尔型,默认为False,如果设置为True,将对原数据进行删除,并且无返回值;如果设置为False,将返回新的删除后的数据,原数据无变化。
- errors{‘ignore’, ‘raise’}:是否提示错误,默认为 ‘raise’,当设置为 ‘ignore’时,将不提示错误并只对存在的label进行drop。
返回值:DataFrame
错误提示:如果任何一个标签在所选的轴上没有发现时,将提示错误。
1. 根据索引进行删除
df = pd.DataFrame(np.arange(12).reshape(3, 4), columns=['A', 'B', 'C', 'D'])
# 根据列标签删除列
df.drop(['B', 'C'], axis=1)
df.drop(columns=['B', 'C'])
# 根据索引删除行
df.drop([0, 1])
2. 根据属性值进行删除
根据属性值进行删除的重点在于确定某个数值所在的行或者列的索引,主要内容为获取所在行的index, 具体方法为
# 根据属性值条件进行删除
df = df.drop(df[df['B']==9].index) #返回新的DataFrame
df = df.drop(df[df.B > 9].index)
df.drop(df[df.B > 9 ].index, inplace=True) #在原数据上进行删除
# 根据多个条件进行删除,两元关系运算符有 | , & ~
df = df.drop(df[(df.B>9) & (df.B < 12)].index)
参考文献: