python 分组对某个字段去重计数
时间: 2023-10-16 14:07:03 浏览: 46
可以使用Python中的pandas库来进行分组对某个字段去重计数的操作。具体步骤如下:
1. 导入pandas库
```
import pandas as pd
```
2. 创建一个DataFrame
假设我们有一个包含学生姓名和所属班级的DataFrame,可以用以下代码创建:
```
data = {'name': ['Tom', 'Jerry', 'Tom', 'Alice', 'Jerry'], 'class': ['A', 'B', 'A', 'C', 'B']}
df = pd.DataFrame(data)
```
3. 分组、去重、计数
使用pandas的groupby函数对DataFrame进行分组,然后使用nunique函数对每组中的唯一值进行计数。
```
result = df.groupby('class')['name'].nunique()
```
其中,'class'是要进行分组的字段,'name'是要去重计数的字段。
最终得到的结果为:
```
class
A 2
B 2
C 1
Name: name, dtype: int64
```
表示在每个班级中,有多少个不同的学生姓名。
相关问题
list对某个字段去重并收集
您可以使用Python中的列表推导式和集合(set)来对列表中的某个字段进行去重并收集。假设您有一个包含字典元素的列表,每个字典都有一个字段,您可以按以下方式进行操作:
```python
my_list = [{'field': 'value1'}, {'field': 'value2'}, {'field': 'value1'}, {'field': 'value3'}]
unique_values = list({item['field'] for item in my_list})
```
这里的`my_list`是您的原始列表,而`item['field']`是您要去重的字段。通过使用列表推导式`{item['field'] for item in my_list}`,我们创建了一个集合(set),它会自动去除重复的值。然后,我们将这个集合转换回列表,得到去重后的结果。
在上面的例子中,`unique_values`将包含`['value1', 'value2', 'value3']`,它们是原始列表中`'field'`字段的唯一值。
python 根据多个字段去重
可以使用pandas库中的drop_duplicates方法,指定多个列名即可去重。例如:
```
import pandas as pd
df = pd.DataFrame({'col1': ['A', 'A', 'B', 'B'], 'col2': ['C', 'D', 'C', 'D'], 'col3': ['E', 'F', 'G', 'H']})
df.drop_duplicates(subset=['col1', 'col2'], keep='first', inplace=True)
print(df)
```
其中,subset参数指定了多个需要去重的列名,keep参数指定了保留哪个重复行('first'表示保留第一个,'last'表示保留最后一个,False表示删除所有重复行),inplace参数表示是否在原数据上修改。