Pandas 处理重复值

在大型数据集中,我们经常会遇到表格中的重复条目。这些重复条目会影响我们的分析并扭曲结果。

Pandas 提供了几种方法来查找和删除 DataFrame 中的重复条目。


查找重复条目

我们可以使用 `duplicated()` 方法在 DataFrame 中查找重复条目。如果一行重复,它将返回 `True`,否则返回 `False`。

import pandas as pd

# create dataframe
data = {
    'Name': ['John', 'Anna', 'John', 'Anna', 'John'],
    'Age': [28, 24, 28, 24, 19],
    'City': ['New York', 'Los Angeles', 'New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)

# check for duplicate entries print(df.duplicated())

输出

0    False
1    False
2     True
3     True
4    False
dtype: bool

在上面的示例中,我们使用 `duplicated()` 方法检查了 df 中的重复条目。它返回一个包含布尔值的系列,指示条目是否重复。

在这里,我们在第三行和第四行得到了 `True`,因为它们分别是第一行和第二行的重复项。


示例:根据列查找重复项

默认情况下,`duplicated()` 会考虑所有列。要根据特定列查找重复项,我们可以将它们作为列表传递给 `duplicated()` 函数。

import pandas as pd

# create dataframe
data = {
    'Name': ['John', 'Anna', 'Johnny', 'Anna', 'John'],
    'Age': [28, 24, 28, 24, 19],
    'City': ['New York', 'Las Vegas', 'New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)

# check for duplicate entries in columns Name and Age print(df.duplicated(subset=['Name', 'Age']))

输出

0    False
1    False
2    False
3     True
4    False
dtype: bool

在此示例中,我们仅根据 `Name` 和 `Age` 列检查了重复条目。

如果您查看 `Name` 和 `Age` 列,第四行是第二行的重复项。因此,第四行的布尔值为 `True`。


删除重复条目

我们可以使用 `drop_duplicates()` 方法在 Pandas 中删除重复条目。例如:

import pandas as pd

# create dataframe
data = {
    'Name': ['John', 'Anna', 'John', 'Anna', 'John'],
    'Age': [28, 24, 28, 24, 19],
    'City': ['New York', 'Los Angeles', 'New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)

# remove duplicates df.drop_duplicates(inplace=True)
print(df)

输出

   Name  Age         City
0  John   28     New York
1  Anna   24  Los Angeles
4  John   19      Chicago

在此示例中,我们使用 `drop_duplicates()` 从 df 中删除了重复条目。

此处,`inplace=True` 指定更改将在原始 DataFrame 中进行。

请注意,`drop_duplicates()` 函数默认会保留第一个重复的条目并删除最后一个。在这里,第一行和第二行被保留,而第三行和第四行被删除。

要保留最后一个条目,我们可以传递 `keep='last'` 参数。例如:

import pandas as pd

# create dataframe
data = {
    'Name': ['John', 'Anna', 'John', 'Anna', 'John'],
    'Age': [28, 24, 28, 24, 19],
    'City': ['New York', 'Los Angeles', 'New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)

# remove duplicates, keep last entries df.drop_duplicates(keep='last', inplace=True)
print(df)

输出

   Name  Age         City
2  John   28     New York
3  Anna   24  Los Angeles
4  John   19      Chicago

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战