Python中的Pandas DataFrame drop()方法

Pandas DataFrame drop()函数从行和列中删除指定的标签。 drop()函数通过定义标签名称和相应的轴或直接提及索引或列名称来删除行和列。当我们使用多索引时,通过提及该级别将删除不同级别的标签。它用于删除分析中不需要的数据框部分。

了解Pandas DataFrame drop()

熊市猫数据框是包含以下内容的数据结构:

推荐阅读
2

如何在Microsoft Azure云中拍摄磁盘快照

1的1,819
  1. 在二维,行和列中组织的数据
  2. 对应于行和列的标签

有很多方法可以创建Pandas DataFrame。在大多数情况下,你将使用DataFrame构造函数并提供数据,标签和其他信息。你可以将数据作为二维列表,元组或NumPy数组传递。你也可以将其作为字典或Pandas Series实例。

让我们使用Dictionary创建Pandas DataFrame。

import pandas as pd
import numpy as np

# Importing numpy for NaN values
# Creating dataset using dictionary
dataset = {
    'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '02', '03', '04', np.nan],
    'Maths': ['93', '63', np.nan, '94', '83'],
    'Science': ['88', np.nan, '66', '94', np.nan],
    'English': ['93', '74', '84', '92', '87']}

row_labels = ['a', 'b', 'c', 'd', 'e']    

df = pd.DataFrame(data = dataset, index = row_labels)
print("DataFrame:n", df)

输出量

DataFrame:
     Name Roll no Maths Science English
a  Rohit      01    93      88      93
b   Arun      02    63     NaN      74
c  Sohit      03   NaN      66      84
d   Arun      04    94      94      92
e  Shubh     NaN    83     NaN      87

数据集是一个Python变量,它引用保存学生数据的Dictionary。它还包含各列的标签:

‘名称’

“没有成交量”

‘数学’

‘科学’

‘英语’

最后,row_labels引用包含行标签的列表,行标签是从a到e的数字。 Pandas DataFrames有时可能非常大,使其无法一次查看所有行。你可以使用.head()显示前几项,使用tail()显示后几项。

现在,让我们了解Pandas DataFrame drop()方法的语法。

句法

DataFrame.drop(self, labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors=’raise’) 

参量

drop()函数总共包含七个参数,其中一些是可选的。

  • 标签:是要删除的索引或列标签。默认情况下,它设置为单个标签或类似列表。
  • axis:它的值为0和1。如果要从索引中删除,请在参数中输入0,要从列中删除时将其输入1。默认情况下为0。
  • index:指定轴的替代方法(标签,axis = 0等效于index =标签)
  • 列:定义轴的替代方法(标签,轴= 1等于列=标签。
  • level:此参数是可选的,用于multiIndex用途,这是从中删除标签的级别。
  • inplace:布尔值参数,如果为true,则执行操作就位并返回None。默认情况下,其值为false。
  • 错误:如果将其设置为“忽略”,则会抑制错误,并且仅删除现有标签。默认情况下,它可以有两个值:第一个是“ ignore”,第二个是“ raise”。

返回值

Pandas drop()方法返回没有删除的索引或复杂标签的数据帧。

使用drop()方法从DataFrame中删除列

让我们从DataFrame中删除“科学”列,然后查看输出。

import pandas as pd
import numpy as np

# Importing numpy for NaN values
# Creating dataset using dictionary
dataset = {
    'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '02', '03', '04', np.nan],
    'Maths': ['93', '63', np.nan, '94', '83'],
    'Science': ['88', np.nan, '66', '94', np.nan],
    'English': ['93', '74', '84', '92', '87']}

row_labels = ['a', 'b', 'c', 'd', 'e']

df = pd.DataFrame(data=dataset, index=row_labels)
print("DataFrame:n", df)

print('Remove "Science" column from DataFrame')
removed = df.drop(['Science'], axis=1)
print("After Removing Science DataFrame:n", removed)

输出量

DataFrame:
     Name Roll no Maths Science English
a  Rohit      01    93      88      93
b   Arun      02    63     NaN      74
c  Sohit      03   NaN      66      84
d   Arun      04    94      94      92
e  Shubh     NaN    83     NaN      87
Remove "Science" column from DataFrame
After Removing Science DataFrame:
     Name Roll no Maths English
a  Rohit      01    93      93
b   Arun      02    63      74
c  Sohit      03   NaN      84
d   Arun      04    94      92
e  Shubh     NaN    83      87

在此示例中,我们从DataFrame中删除了Science列。绕过,axis = 1,我们专门告诉过要删除列。我们可以用另一种方式来做到这一点,例如在df.drop()参数中显式定义列。

removed = df.drop(columns=['Science'])

现在,我们不必将axis = 1参数传递给drop()方法。我们将得到相同的输出。

DataFrame:
     Name Roll no Maths Science English
a  Rohit      01    93      88      93
b   Arun      02    63     NaN      74
c  Sohit      03   NaN      66      84
d   Arun      04    94      94      92
e  Shubh     NaN    83     NaN      87
Remove "Science" column from DataFrame
After Removing Science DataFrame:
     Name Roll no Maths English
a  Rohit      01    93      93
b   Arun      02    63      74
c  Sohit      03   NaN      84
d   Arun      04    94      92
e  Shubh     NaN    83      87

让我们看看另一个程序。

编写一个程序来演示drop()的工作。

import pandas as pd

data = {
    'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '03', '04', '05', '09'],
    'Marks in maths': ['93', '63', '74', '94', '83'],
    'Marks in science': ['88', '55', '66', '94', '35'],
    'Marks in english': ['93', '74', '84', '92', '87']}

df = pd.DataFrame(data)

# Removing the marks in maths column
print(df.drop(['Marks in maths'], axis=1))

输出量

Name Roll no Marks in science Marks in english
0  Rohit      01               88               93
1  Mohit      03               55               74
2  Sohit      04               66               84
3   Arun      05               94               92
4  Shubh      09               35               87

在此示例中,我们可以看到我们创建了一个字典,其中包含5个学生的数据。数据包括其名称,成交量号和不同主题中的标记。

例如,在这里,如果我们只想显示两个主题的数据,则可以使用drop()方法将特定的列放在此处。在这里,我们使用drop函数在maths列中删除了标记。

使用df.drop()方法删除多列

熊市猫DataFrame drop()函数可以帮助我们从DataFrame中删除多个列。我们可以将列列表传递给drop()方法,它将从DataFrame中删除所有列。

import pandas as pd

data = {
    'Name': ['Rohit', 'Mohit', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '03', '04', '05', '09'],
    'Marks in maths': ['93', '63', '74', '94', '83'],
    'Marks in science': ['88', '55', '66', '94', '35'],
    'Marks in english': ['93', '74', '84', '92', '87']}

df = pd.DataFrame(data)
# Dropping multiple columns
print(df.drop(['Marks in maths', 'Marks in science'], axis=1))

输出量

Name Roll no Marks in english
0  Rohit      01               93
1  Mohit      03               74
2  Sohit      04               84
3   Arun      05               92
4  Shubh      09               87

在这里,我们在drop()函数的参数中传递了两列,你可以看到我们已经使用drop函数删除了两列,即数学中的Marks和科学中的Marks。

根据列索引删除列

df.drop()函数根据列索引删除列。我们可以将索引列表传递给drop()函数,它将根据列索引删除列。

import pandas as pd
import numpy as np

# Importing numpy for NaN values
# Creating dataset using dictionary
dataset = {
    'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '02', '03', '04', np.nan],
    'Maths': ['93', '63', np.nan, '94', '83'],
    'Science': ['88', np.nan, '66', '94', np.nan],
    'English': ['93', '74', '84', '92', '87']}

df = pd.DataFrame(data=dataset)
print("DataFrame:n", df)
print('--------------------------------------')
# Remove rows based on index
df.drop(df.columns[[1, 3]], axis=1, inplace=True)
print("After removing specific rows from DataFrame:n", df)

输出量

DataFrame:
     Name Roll no Maths Science English
0  Rohit      01    93      88      93
1   Arun      02    63     NaN      74
2  Sohit      03   NaN      66      84
3   Arun      04    94      94      92
4  Shubh     NaN    83     NaN      87
--------------------------------------
After removing specific rows from DataFrame:
     Name Maths English
0  Rohit    93      93
1   Arun    63      74
2  Sohit   NaN      84
3   Arun    94      92
4  Shubh    83      87

在此示例中,我们使用df.columns()函数传递列索引的列表,然后使用df.drop()方法盘点该函数,最后,它将删除由索引指定的列。

使用drop()在DataFrame中按索引删除行

Pandas df.drop()方法通过指定DataFrame的索引来删除行。我们只需要指定索引列表,它将从DataFrame中删除那些基于索引的行。

让我们基于索引0、2和3删除行。

import pandas as pd
import numpy as np

# Importing numpy for NaN values
# Creating dataset using dictionary
dataset = {
    'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '02', '03', '04', np.nan],
    'Maths': ['93', '63', np.nan, '94', '83'],
    'Science': ['88', np.nan, '66', '94', np.nan],
    'English': ['93', '74', '84', '92', '87']}

df = pd.DataFrame(data=dataset)
print("DataFrame:n", df)
print('--------------------------------------')
# Remove rows based on index
removedRow = df.drop([0, 2, 3])
print("After removing specific rows from DataFrame:n", removedRow)

输出量

DataFrame:
     Name Roll no Maths Science English
0  Rohit      01    93      88      93
1   Arun      02    63     NaN      74
2  Sohit      03   NaN      66      84
3   Arun      04    94      94      92
4  Shubh     NaN    83     NaN      87
--------------------------------------
After removing specific rows from DataFrame:
     Name Roll no Maths Science English
1   Arun      02    63     NaN      74
4  Shubh     NaN    83     NaN      87

在此示例中,我们已将行的索引列表传递给需要删除的drop函数。

使用iloc删除列[] 和drop()方法

Pandas.DataFrame.iloc是一个独特的内置方法,该方法返回基于整数位置的索引以按位置进行选择。我们将使用iloc选择列[] 使用drop()方法。

import pandas as pd
import numpy as np

# Importing numpy for NaN values
# Creating dataset using dictionary
dataset = {
    'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '02', '03', '04', np.nan],
    'Maths': ['93', '63', np.nan, '94', '83'],
    'Science': ['88', np.nan, '66', '94', np.nan],
    'English': ['93', '74', '84', '92', '87']}

df = pd.DataFrame(data=dataset)
print("DataFrame:n", df)
print('--------------------------------------')
df.drop(df.iloc[:, 1:3], inplace=True, axis=1)
print("After removing specific rows from DataFrame:n", df)

输出量

DataFrame:
     Name Roll no Maths Science English
0  Rohit      01    93      88      93
1   Arun      02    63     NaN      74
2  Sohit      03   NaN      66      84
3   Arun      04    94      94      92
4  Shubh     NaN    83     NaN      87
--------------------------------------
After removing specific rows from DataFrame:
     Name Science English
0  Rohit      88      93
1   Arun     NaN      74
2  Sohit      66      84
3   Arun      94      92
4  Shubh     NaN      87

在此示例中,我们使用iloc选择了1和2行[] 并使用drop()方法将其从DataFrame中移除。

使用loc删除列[] 和drop()方法

熊市猫DataFrame位置[] 函数用于通过标签或布尔数组访问一组行和列。 loc()方法主要基于标签完成,但是布尔数组也可以执行此操作。然后,我们将使用drop()方法删除选定的行或列。

import pandas as pd
import numpy as np

# Importing numpy for NaN values
# Creating dataset using dictionary
dataset = {
    'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '02', '03', '04', np.nan],
    'Maths': ['93', '63', np.nan, '94', '83'],
    'Science': ['88', np.nan, '66', '94', np.nan],
    'English': ['93', '74', '84', '92', '87']}

df = pd.DataFrame(data=dataset)
print("DataFrame:n", df)
print('--------------------------------------')
df.drop(df.loc[:, 'Maths':'Science'].columns, axis=1, inplace=True)
print("After removing specific rows from DataFrame:n", df)

输出量

DataFrame:
     Name Roll no Maths Science English
0  Rohit      01    93      88      93
1   Arun      02    63     NaN      74
2  Sohit      03   NaN      66      84
3   Arun      04    94      94      92
4  Shubh     NaN    83     NaN      87
--------------------------------------
After removing specific rows from DataFrame:
     Name Roll no English
0  Rohit      01      93
1   Arun      02      74
2  Sohit      03      84
3   Arun      04      92
4  Shubh     NaN      87

你可以看到“数学”和“科学”列已从DataFrame中删除。 loc()和iloc()之间的区别在于iloc()排除了最后一列范围元素。

使用迭代方式删除列

不建议使用这种方法,因为它需要花费一些时间来执行,但是这种方法的作用是必须使用df.columns()方法获取列,并使用for循环对列进行迭代。然后,我们使用Python in运算符通过del方法删除该列。

import pandas as pd
import numpy as np

# Importing numpy for NaN values
# Creating dataset using dictionary
dataset = {
    'Name': ['Rohit', 'Arun', 'Sohit', 'Arun', 'Shubh'],
    'Roll no': ['01', '02', '03', '04', np.nan],
    'Maths': ['93', '63', np.nan, '94', '83'],
    'Science': ['88', np.nan, '66', '94', np.nan],
    'English': ['93', '74', '84', '92', '87']}

df = pd.DataFrame(data=dataset)
print("DataFrame:n", df)
print('--------------------------------------')
for col in df.columns:
    if 'Maths' in col:
        del df[col]

print("After removing specific rows from DataFrame:n", df)

输出量

DataFrame:
     Name Roll no Maths Science English
0  Rohit      01    93      88      93
1   Arun      02    63     NaN      74
2  Sohit      03   NaN      66      84
3   Arun      04    94      94      92
4  Shubh     NaN    83     NaN      87
--------------------------------------
After removing specific rows from DataFrame:
     Name Roll no Science English
0  Rohit      01      88      93
1   Arun      02     NaN      74
2  Sohit      03      66      84
3   Arun      04      94      92
4  Shubh     NaN     NaN      87

在此示例中,我们检查了Maths列,如果该列存在,那么我们将使用del运算符从DataFrame中删除该列。

结论

在本教程中,我们看到了以下从Pandas DataFrame中删除列或行的方法。

  1. 从DataFrame中删除单个列。
  2. 从DataFrame中删除多个列。
  3. 使用列索引删除列
  4. 使用iloc删除列[ ] 和drop()
  5. 使用loc删除列[ ] 和drop()
  6. 使用迭代方式删除列
  7. 使用索引删除行

最后,Python教程中的Pandas DataFrame drop()方法结束了。

也可以看看

熊市猫DataFrame count()

熊市猫DataFrame reset_index()

熊市猫DataFrame head()

熊市猫DataFrame describe()

熊市猫DataFrame read_csv()

资讯来源:由0x资讯编译自APPDIVIDEND,版权归作者Ankit Lathiya所有,未经许可,不得转载
关注我们:Twitter | Facebook | Linkedin | Medium | Telegram | Weibo | WeChat