You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python清洗DataFrame数据:合并name与phone_no字段相同的CSV行

实现方案

核心逻辑是对DataFrame按照name、phone_no两列做分组,对分组内其余列做聚合处理即可。

最简实现(分组内同列仅1个非空值场景)

pandas内置的first()聚合方法会自动跳过空值,取分组内第一个有效数据,直接使用即可:

import pandas as pd

# 假设你的原始数据存储在df变量中
result_df = df.groupby(['name', 'phone_no'], as_index=False).first()

多非空值合并场景

如果同一分组下某列存在多个不同的非空值,需要把所有值拼接为单个内容,可以自定义聚合规则:

import pandas as pd
import numpy as np

result_df = df.groupby(['name', 'phone_no'], as_index=False).agg(
    # 示例为对所有列去重后用逗号拼接非空值
    lambda x: ','.join(x.dropna().astype(str).unique()) if len(x.dropna()) > 0 else np.nan
)

自定义不同列的聚合规则

如果不同列需要不同的聚合逻辑(比如数值列求和、时间列取最新值),可以单独指定:

result_df = df.groupby(['name', 'phone_no'], as_index=False).agg(
    # 地址列取第一个非空值
    address = ('address', 'first'),
    # 消费金额列求和
    total_consume = ('consume_amount', 'sum'),
    # 最近消费时间取最大值
    last_consume_time = ('consume_time', 'max')
)

内容的提问来源于stack exchange,提问作者justb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:06:04