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