pandas dataframe多列去重
时间: 2023-07-11 22:44:54 浏览: 68
要在 Pandas DataFrame 中对多个列进行去重,可以使用 `drop_duplicates` 方法并传递列名的列表作为参数。例如,假设我们有以下 DataFrame:
```
import pandas as pd
data = {
'A': [1, 1, 2, 2],
'B': [3, 4, 3, 4],
'C': ['a', 'b', 'a', 'b']
}
df = pd.DataFrame(data)
print(df)
```
输出:
```
A B C
0 1 3 a
1 1 4 b
2 2 3 a
3 2 4 b
```
要对列 A、B 和 C 进行去重,可以使用以下代码:
```
df = df.drop_duplicates(subset=['A', 'B', 'C'])
print(df)
```
输出:
```
A B C
0 1 3 a
1 1 4 b
2 2 3 a
3 2 4 b
```
可以看到,行 2 和行 3 还是保留下来的,因为它们在列 A、B 和 C 中的值都不同。如果只考虑前两列 A 和 B 进行去重,可以将子集参数设置为 `subset=['A', 'B']`。
相关问题
pandas 按某列去重
可以使用 drop_duplicates() 方法的 subset 参数来指定按照某一列或多列去重。例如,如果我们要按照 DataFrame 中的列 col1 去重,则可以这样做:
```python
import pandas as pd
# 创建一个包含重复行的 DataFrame
df = pd.DataFrame({
'col1': [1, 2, 2, 3, 3],
'col2': ['a', 'b', 'b', 'c', 'c']
})
# 按照 col1 列去除重复行并打印结果
df = df.drop_duplicates(subset=['col1'])
print(df)
```
这将输出一个去除了按 col1 列重复行的 DataFrame:
```
col1 col2
0 1 a
1 2 b
3 3 c
```
在 subset 参数中,也可以指定多个列,以按多列去重。例如,如果我们要按照 col1 和 col2 两列去重,则可以这样做:
```python
# 按照 col1 和 col2 列去除重复行并打印结果
df = df.drop_duplicates(subset=['col1', 'col2'])
print(df)
```
这将输出一个去除了按 col1 和 col2 列重复行的 DataFrame:
```
col1 col2
0 1 a
1 2 b
3 3 c
```
dataframe列去重
可以使用 pandas 库中的 drop_duplicates() 方法进行去重。该方法会返回一个新的数据帧,其中包含原始数据帧中去重后的数据。
drop_duplicates() 方法可以接受多个参数来指定在哪些列上进行去重,以及如何处理重复值。其中最常用的参数是 subset 和 keep。
- subset:指定需要去重的列名,可以是一个字符串或一个列表。
- keep:指定保留哪个重复值,可以是 'first'(保留第一个出现的值)、'last'(保留最后一个出现的值)或 False(全部删除)。
以下是一个示例:
```python
import pandas as pd
# 创建一个包含重复值的数据帧
df = pd.DataFrame({'key1': ['A', 'B', 'A', 'C', 'B'],
'key2': ['X', 'Y', 'Y', 'Z', 'X'],
'value': [1, 2, 3, 4, 5]})
# 对 key1 和 key2 列进行去重,并保留第一个出现的值
df2 = df.drop_duplicates(subset=['key1', 'key2'], keep='first')
print(df2)
```
输出结果如下:
```
key1 key2 value
0 A X 1
1 B Y 2
3 C Z 4
4 B X 5
```
可以看到,重复的行已经被删除了,保留了第一个出现的值。