pandas 根据A列数据分类B列的数据 然后对B列的数据去重
时间: 2023-06-19 08:02:48 浏览: 107
可以使用 `groupby` 和 `drop_duplicates` 方法实现:
```python
import pandas as pd
# 创建示例数据
data = {
'A': ['a', 'a', 'b', 'b', 'c', 'c'],
'B': [1, 1, 2, 2, 3, 3]
}
df = pd.DataFrame(data)
# 根据 A 列分组,对 B 列去重
result = df.groupby('A')['B'].apply(lambda x: x.drop_duplicates()).reset_index()
print(result)
```
输出:
```
A level_1 B
0 a 0 1
1 b 2 2
2 c 4 3
```
其中,`groupby` 方法将数据按 `A` 列分组,然后对每个分组的 `B` 列应用 `drop_duplicates` 方法,返回去重后的结果。最后使用 `reset_index` 方法将结果转换为 DataFrame 格式。
相关问题
pandas 根据A列数据中每一个不同数据出现次数由高到低排列分类B列的数据 并对B列的数据去重
可以使用 `pandas` 库中的 `groupby()` 和 `value_counts()` 方法来实现。
假设数据集的 DataFrame 名为 `df`,A列的列名为 `A`,B列的列名为 `B`,代码如下:
``` python
result = df.groupby(['B'])['A'].value_counts().sort_values(ascending=False).reset_index(name='count')
result.drop_duplicates(subset='B', keep='first', inplace=True)
```
这里先对 B 列进行分组,然后对 A 列进行计数并按照出现次数从高到低排序,最后重置索引并将计数列的列名设置为 `count`。
然后使用 `drop_duplicates()` 方法对 B 列进行去重,只保留第一次出现的行。
完整代码如下:
``` python
import pandas as pd
# 创建示例数据集
data = {'A': [1, 2, 2, 3, 3, 3, 4, 4, 4, 4], 'B': ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'd']}
df = pd.DataFrame(data)
# 排序并去重
result = df.groupby(['B'])['A'].value_counts().sort_values(ascending=False).reset_index(name='count')
result.drop_duplicates(subset='B', keep='first', inplace=True)
print(result)
```
输出结果为:
```
B A count
0 a 4 2
1 b 4 2
2 c 3 2
3 d 4 1
```
pandas 去重
你可以使用 pandas 库中的 drop_duplicates() 方法来去除 DataFrame 或 Series 中的重复数据。该方法默认会判断全部列的值是否完全相同,如果是,则将其视为重复数据并去除。示例代码如下:
```python
import pandas as pd
# 创建一个含有重复数据的 DataFrame
df = pd.DataFrame({'col1': [1, 2, 2, 3], 'col2': ['a', 'b', 'b', 'c']})
print(df)
# 去除重复数据
df = df.drop_duplicates()
print(df)
```
输出结果如下:
```
col1 col2
0 1 a
1 2 b
2 2 b
3 3 c
col1 col2
0 1 a
1 2 b
3 3 c
```
在上面的例子中,我们首先创建了一个含有重复数据的 DataFrame,然后使用 drop_duplicates() 方法去除重复数据,并输出去重后的结果。注意,该方法默认会保留第一次出现的重复数据,如果需要保留最后一次出现的重复数据,可以使用 keep='last' 参数。
阅读全文