Pandas 删除列和行
时间:2020-02-23 14:42:07 来源:igfitidea点击:
1. Pandas drop()函数语法
Pandas DataFrame drop()函数允许我们删除列和行。
drop()函数的语法为:
drop( self, labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors="raise" )
标签:要从DataFrame中删除的标签。
它与"轴"一起使用以标识行或者列的名称。轴:可能的值为{0或者"索引",1或者"列"},默认为0。
它与"标签"一起使用以指定行或者列。index:要从DataFrame中删除的索引。
列:要从DataFrame中删除的列。
level:用于指定MultiIndex DataFrame的级别。
inplace:如果为True,则更改源DataFrame并返回None。
默认值为False,源DataFrame保持不变,并返回一个新的DataFrame对象。错误:可能的值为{'ignore','raise'},默认为'raise'。
如果DataFrame没有指定标签,则会引发KeyError。
如果我们将错误指定为"忽略",则错误将被消除,并且仅删除现有标签。
我们来看一些使用Pandas DataFrame drop()函数的示例。
2.Pandas 掉落柱
我们可以从DataFrame中删除单个列以及多个列。
2.1)删除单列
import pandas as pd d1 = {'Name': ['hyman', 'Meghna', 'David'], 'ID': [1, 2, 3], 'Role': ['CEO', 'CTO', 'Editor']} source_df = pd.DataFrame(d1) print(source_df) # drop single column result_df = source_df.drop(columns='ID') print(result_df)
输出:
Name ID Role 0 hyman 1 CEO 1 Meghna 2 CTO 2 David 3 Editor Name Role 0 hyman CEO 1 Meghna CTO 2 David Editor
2.2)删除多列
result_df = source_df.drop(columns=['ID', 'Role']) print(result_df)
输出:
Name 0 hyman 1 Meghna 2 David
3.Pandas 排行
让我们看一些示例,从DataFrame对象中删除单行和多行。
3.1)删除单行
import pandas as pd d1 = {'Name': ['hyman', 'Meghna', 'David'], 'ID': [1, 2, 3], 'Role': ['CEO', 'CTO', 'Editor']} source_df = pd.DataFrame(d1) result_df = source_df.drop(index=0) print(result_df)
输出:
Name ID Role 1 Meghna 2 CTO 2 David 3 Editor
3.2)删除多行
result_df = source_df.drop(index=[1, 2]) print(result_df)
输出:
Name ID Role 0 hyman 1 CEO
4.将DataFrame的列和行放到适当的位置
我们可以指定inplace = True
来从源DataFrame本身中删除列和行。
在这种情况下,drop()函数调用将返回None。
import pandas as pd d1 = {'Name': ['hyman', 'Meghna', 'David'], 'ID': [1, 2, 3], 'Role': ['CEO', 'CTO', 'Editor']} source_df = pd.DataFrame(d1) source_df.drop(columns=['ID'], index=[0], inplace=True) print(source_df)
输出:
Name Role 1 Meghna CTO 2 David Editor
5.使用标签和轴放置列和行
不建议删除行和列。
但是,很高兴知道这一点,因为在Pandas 版本0.21.0中,drop()函数引入了" index"和" columns"参数。
因此,对于较旧的代码,您可能会遇到它。
import pandas as pd d1 = {'Name': ['hyman', 'Meghna', 'David'], 'ID': [1, 2, 3], 'Role': ['CEO', 'CTO', 'Editor']} source_df = pd.DataFrame(d1) # drop rows result_df = source_df.drop(labels=[0, 1], axis=0) print(result_df) # drop columns result_df = source_df.drop(labels=['ID', 'Role'], axis=1) print(result_df)
输出:
Name ID Role 2 David 3 Editor Name 0 hyman 1 Meghna 2 David
6.抑制删除列和行中的错误
如果DataFrame不包含给定的标签,则会引发KeyError。
result_df = source_df.drop(columns=['XYZ'])
输出:
KeyError: "['XYZ'] not found in axis"
我们可以通过在drop()函数调用中指定errors ='ignore'
来抑制此错误。
result_df = source_df.drop(columns=['XYZ'], errors='ignore') print(result_df)
输出:
Name ID Role 0 hyman 1 CEO 1 Meghna 2 CTO 2 David 3 Editor