pandas如何将多行中出现的相同号码变成一行展示
时间: 2024-05-14 18:14:44 浏览: 7
可以使用pandas的groupby方法对数据进行分组,然后再对每个组中的数据进行合并,最终得到只包含唯一号码的一行数据。
具体步骤如下:
1. 对数据进行分组,以号码为键进行分组:
```python
groups = df.groupby('号码')
```
2. 对每个组中的数据进行合并,可以使用agg方法,如下所示:
```python
merged = groups.agg({
'姓名': 'first',
'地址': 'first',
'电话': lambda x: ','.join(x)
})
```
这里使用了lambda表达式来将每个组中的电话号码合并成一个字符串,多个号码之间用逗号分隔。
3. 最后得到的merged就是只包含唯一号码的一行数据,可以根据需要进行保存或者展示。
完整代码如下:
```python
import pandas as pd
# 创建示例数据
data = {
'号码': ['123456', '123456', '654321', '654321', '654321'],
'姓名': ['张三', '李四', '王五', '赵六', '钱七'],
'地址': ['北京', '上海', '广州', '深圳', '成都'],
'电话': ['111111', '222222', '333333', '444444', '555555']
}
df = pd.DataFrame(data)
# 对数据进行分组和合并
groups = df.groupby('号码')
merged = groups.agg({
'姓名': 'first',
'地址': 'first',
'电话': lambda x: ','.join(x)
})
# 展示结果
print(merged)
```
输出结果如下:
```
姓名 地址 电话
号码
123456 张三 北京 111111,222222
654321 王五 广州 333333,444444,555555
```