pandas根据列去重
在数据处理过程中,经常会遇到需要对数据进行去重操作的情况。去重是指在数据中找到重复的行,并将其去除,保留唯一的行。在 pandas 中,我们可以根据指定的列对数据进行去重操作,以保证数据的唯一性。本文将详细介绍 pandas 如何根据列去重,帮助大家更好地处理数据。
1. 数据准备
首先,我们需要准备一些数据用于演示。我们创建一个包含重复行的 DataFrame,用来展示去重操作的效果。
import pandas as pd
data = {'A': [1, 2, 3, 1, 2, 3],
'B': ['a', 'b', 'c', 'a', 'b', 'c'],
'C': [True, False, True, False, True, False]}
df = pd.DataFrame(data)
print(df)
运行以上代码,可以得到如下输出:
A B C
0 1 a True
1 2 b False
2 3 c True
3 1 a False
4 2 b True
5 3 c False
可以看到,DataFrame 中包含重复的行,下面我们将演示如何根据列去重操作。
2. 根据单列去重
我们首先介绍如何根据单列去重。可以使用 drop_duplicates()
方法来实现,该方法会保留第一次出现的唯一行,其他重复行会被去除。下面我们演示如何根据列’A’去重。
df_unique_A = df.drop_duplicates(subset=['A'])
print(df_unique_A)
运行以上代码,可以得到如下输出:
A B C
0 1 a True
1 2 b False
2 3 c True
可以看到,根据列’A’去重后,保留了第一次出现的唯一行。
3. 根据多列去重
除了单列去重,我们还可以根据多列进行去重操作。只需将需要去重的列名以列表形式传递给 drop_duplicates()
方法即可。下面我们演示如何根据列’A’和列’B’进行去重。
df_unique_AB = df.drop_duplicates(subset=['A', 'B'])
print(df_unique_AB)
运行以上代码,可以得到如下输出:
A B C
0 1 a True
1 2 b False
2 3 c True
可以看到,根据列’A’和’B’去重后,保留了第一次出现的唯一行。
4. 保留最后一次出现的唯一行
有时我们需要保留最后一次出现的唯一行,可以将 keep
参数设置为 ‘last’。下面演示如何保留最后一次出现的唯一行。
df_unique_last = df.drop_duplicates(subset=['A'], keep='last')
print(df_unique_last)
运行以上代码,可以得到如下输出:
A B C
3 1 a False
4 2 b True
5 3 c False
可以看到,保留了每个唯一值最后一次出现的行。
5. 更多参数介绍
除了 subset
和 keep
参数,drop_duplicates()
方法还有其他参数可以使用,这里简单介绍一下:
keep='first'
:保留第一次出现的唯一行(默认值)。keep=False
:将所有重复行去除。inplace=True
:在原 DataFrame 上直接进行去重操作,而不是返回一个新的 DataFrame。
6. 总结
本文介绍了 pandas 如何根据列去重,包括根据单列和多列去重,以及保留第一次或最后一次出现的唯一行。通过去重操作,可以帮助我们处理数据中的重复信息,确保数据的唯一性。