Pandas 删除行操作详解

Pandas 删除行操作详解

参考:pandas drop row

Pandas 是一个强大的Python数据分析工具库,它提供了大量的方法来操作DataFrame对象。在数据分析过程中,我们经常需要删除DataFrame中的某些行,这可能是因为这些行包含了错误数据、缺失值或者是我们不需要的数据。本文将详细介绍如何使用Pandas来删除DataFrame中的行,并提供了一系列的示例代码。

1. 使用drop方法删除行

Pandas提供了drop方法来删除DataFrame中的行。这个方法非常灵活,可以通过指定标签名来删除特定的行。

示例代码1:通过索引标签删除单行

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'example.com', 'test.com'],
    'visits': [1000, 1500, 900]
}
df = pd.DataFrame(data)

# 删除索引为0的行
df = df.drop(0)
print(df)

Output:

Pandas 删除行操作详解

示例代码2:通过索引标签删除多行

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'example.com', 'test.com'],
    'visits': [1000, 1500, 900]
}
df = pd.DataFrame(data)

# 删除索引为0和2的行
df = df.drop([0, 2])
print(df)

Output:

Pandas 删除行操作详解

2. 使用布尔索引删除行

我们可以使用布尔索引来删除满足特定条件的行。这种方法在需要根据数据内容来删除行时非常有用。

示例代码3:删除某列值满足条件的行

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com'],
    'visits': [1000, 1500, 900]
}
df = pd.DataFrame(data)

# 删除visits列值小于1000的行
df = df[df['visits'] >= 1000]
print(df)

Output:

Pandas 删除行操作详解

示例代码4:结合~操作符删除不满足条件的行

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com'],
    'visits': [1000, 1500, 900]
}
df = pd.DataFrame(data)

# 删除website列不包含'pandasdataframe.com'的行
df = df[~df['website'].str.contains('pandasdataframe.com')]
print(df)

Output:

Pandas 删除行操作详解

3. 使用query方法删除行

query方法允许我们使用字符串表达式来查询数据,这可以用来删除满足特定条件的行。

示例代码5:使用query删除特定条件的行

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com'],
    'visits': [1000, 1500, 900]
}
df = pd.DataFrame(data)

# 删除visits列值小于1000的行
df = df.query('visits >= 1000')
print(df)

Output:

Pandas 删除行操作详解

4. 使用drop方法结合index属性删除行

我们可以先获取满足特定条件的行索引,然后使用drop方法结合这些索引来删除行。

示例代码6:结合行索引删除行

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com'],
    'visits': [1000, 1500, 900]
}
df = pd.DataFrame(data)

# 获取visits列值小于1000的行索引
index_to_drop = df[df['visits'] < 1000].index

# 删除这些行
df = df.drop(index_to_drop)
print(df)

Output:

Pandas 删除行操作详解

5. 使用ilocdrop方法删除行

当我们知道要删除的行的位置时,可以使用iloc方法结合drop方法来删除行。

示例代码7:使用ilocdrop删除特定位置的行

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com'],
    'visits': [1000, 1500, 900]
}
df = pd.DataFrame(data)

# 删除第二行
df = df.drop(df.iloc[1].name)
print(df)

Output:

Pandas 删除行操作详解

6. 使用reset_index方法重置索引

在删除行之后,我们可能需要重置索引,以保持索引的连续性。

示例代码8:删除行后重置索引

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com'],
    'visits': [1000, 1500, 900]
}
df = pd.DataFrame(data)

# 删除第一行
df = df.drop(0)

# 重置索引
df = df.reset_index(drop=True)
print(df)

Output:

Pandas 删除行操作详解

7. 使用inplace参数直接在原DataFrame上删除行

如果我们不想创建一个新的DataFrame,可以使用inplace=True参数直接在原DataFrame上进行删除操作。

示例代码9:使用inplace参数删除行

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com'],
    'visits': [1000, 1500, 900]
}
df = pd.DataFrame(data)

# 直接在原DataFrame上删除第一行
df.drop(0, inplace=True)
print(df)

Output:

Pandas 删除行操作详解

8. 使用axis参数指定删除行

在使用drop方法时,我们可以通过设置axis=0来指定我们要删除的是行而不是列。

示例代码10:使用axis参数指定删除行

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com'],
    'visits': [1000, 1500, 900]
}
df = pd.DataFrame(data)

# 指定删除行而不是列
df = df.drop(1, axis=0)
print(df)

Output:

Pandas 删除行操作详解

9. 使用labels参数指定删除的行标签

在使用drop方法时,我们可以通过labels参数来指定要删除的行标签。

示例代码11:使用labels参数删除行

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'example.com', 'pandasdataframe.com'],
    'visits': [1000, 1500, 900]
}
df = pd.DataFrame(data)

# 指定删除的行标签
df = df.drop(labels=[0, 2])
print(df)

Output:

Pandas 删除行操作详解

10. 使用drop_duplicates方法删除重复的行

有时候我们需要删除DataFrame中的重复行,drop_duplicates方法可以帮助我们实现这一点。

示例代码12:删除重复的行

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'pandasdataframe.com', 'example.com'],
    'visits': [1000, 1000, 1500]
}
df = pd.DataFrame(data)

# 删除重复的行
df = df.drop_duplicates()
print(df)

Output:

Pandas 删除行操作详解

11. 使用dropna方法删除包含缺失值的行

在数据分析过程中,我们经常需要处理缺失值。dropna方法可以帮助我们删除包含缺失值的行。

示例代码13:删除包含缺失值的行

import pandas as pd
import numpy as np

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', np.nan, 'example.com'],
    'visits': [1000, 1500, np.nan]
}
df = pd.DataFrame(data)

# 删除包含缺失值的行
df = df.dropna()
print(df)

Output:

Pandas 删除行操作详解

12. 使用thresh参数删除缺失值过多的行

在使用dropna方法时,我们可以通过thresh参数来指定一个阈值,只删除那些缺失值数量超过这个阈值的行。

示例代码14:删除缺失值过多的行

import pandas as pd
import numpy as np

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', np.nan, 'example.com'],
    'visits': [1000, np.nan, np.nan],
    'users': [500, np.nan, 200]
}
df = pd.DataFrame(data)

# 删除缺失值过多的行
df = df.dropna(thresh=2)
print(df)

Output:

Pandas 删除行操作详解

13. 使用subset参数删除特定列包含缺失值的行

在使用dropna方法时,我们可以通过subset参数来指定一个列名列表,只删除这些列中包含缺失值的行。

示例代码15:删除特定列包含缺失值的行

import pandas as pd
import numpy as np

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', np.nan, 'example.com'],
    'visits': [1000, 1500, np.nan],
    'users': [500, np.nan, 200]
}
df = pd.DataFrame(data)

# 删除website列包含缺失值的行
df = df.dropna(subset=['website'])
print(df)

Output:

Pandas 删除行操作详解

14. 使用all参数删除所有值都是缺失值的行

在使用dropna方法时,我们可以通过how='all'参数来删除所有值都是缺失值的行。

示例代码16:删除所有值都是缺失值的行

import pandas as pd
import numpy as np

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', np.nan, np.nan],
    'visits': [1000, np.nan, np.nan],
    'users': [500, np.nan, np.nan]
}
df = pd.DataFrame(data)

# 删除所有值都是缺失值的行
df = df.dropna(how='all')
print(df)

Output:

Pandas 删除行操作详解

15. 使用any参数删除任意值是缺失值的行

在使用dropna方法时,我们可以通过how='any'参数来删除任意值是缺失值的行。

示例代码17:删除任意值是缺失值的行

import pandas as pd
import numpy as np

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', np.nan, 'example.com'],
    'visits': [1000, 1500, np.nan],
    'users': [500, np.nan, 200]
}
df = pd.DataFrame(data)

# 删除任意值是缺失值的行
df = df.dropna(how='any')
print(df)

Output:

Pandas 删除行操作详解

16. 使用isnullany方法删除包含缺失值的行

除了dropna方法,我们还可以结合使用isnullany方法来删除包含缺失值的行。

示例代码18:使用isnullany方法删除包含缺失值的行

import pandas as pd
import numpy as np

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', np.nan, 'example.com'],
    'visits': [1000, 1500, np.nan],
    'users': [500, np.nan, 200]
}
df = pd.DataFrame(data)

# 删除包含缺失值的行
df = df[~df.isnull().any(axis=1)]
print(df)

Output:

Pandas 删除行操作详解

17. 使用notnullall方法删除包含缺失值的行

除了dropna方法,我们还可以结合使用notnullall方法来删除包含缺失值的行。

示例代码19:使用notnullall方法删除包含缺失值的行

import pandas as pd
import numpy as np

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', np.nan, 'example.com'],
    'visits': [1000, 1500, np.nan],
    'users': [500, np.nan, 200]
}
df = pd.DataFrame(data)

# 删除包含缺失值的行
df = df[df.notnull().all(axis=1)]
print(df)

Output:

Pandas 删除行操作详解

18. 使用duplicated方法删除重复的行

除了drop_duplicates方法,我们还可以使用duplicated方法来删除重复的行。

示例代码20:使用duplicated方法删除重复的行

import pandas as pd

# 创建一个示例DataFrame
data = {
    'website': ['pandasdataframe.com', 'pandasdataframe.com', 'example.com'],
    'visits': [1000, 1000, 1500]
}
df = pd.DataFrame(data)

# 删除重复的行
df = df[~df.duplicated()]
print(df)

Output:

Pandas 删除行操作详解

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程