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

如何在pandas DataFrame中获取每个唯一IMEI对应的最早和最晚日期

解决方案

完全可以用pandas原生的分组聚合能力实现,不需要嵌套循环,代码更简洁,处理大数据量时性能也远高于循环实现。

具体步骤和示例代码如下:

  • 首先将Date & Time列转换为pandas datetime类型,避免直接比较字符串出现错误
  • 按A-Party、IMEI两个维度分组,对日期列分别取最小值(对应首次出现时间)、最大值(对应末次出现时间)
  • 补充每个A-Party对应的唯一IMEI总数,调整列顺序和展示格式即可得到你需要的结果
import pandas as pd

# 假设你的原始DataFrame已经读取为df
# 1. 转换日期列格式
df['Date & Time'] = pd.to_datetime(df['Date & Time'])

# 2. 分组聚合计算每个IMEI的首次、末次出现时间
result = df.groupby(['A-Party', 'IMEI'], as_index=False).agg(
    First_Date=('Date & Time', 'min'),
    Last_Date=('Date & Time', 'max')
)

# 3. 计算每个A-Party对应的总唯一IMEI数量
result['Total IMEI'] = result.groupby('A-Party')['IMEI'].transform('nunique')

# 4. 调整列顺序匹配你需要的输出结构
result = result.rename(columns={'First_Date': 'First Date', 'Last_Date': 'Last Date'})
result = result[['A-Party', 'Total IMEI', 'IMEI', 'First Date', 'Last Date']]

# (可选)如果需要和示例展示效果一致,把重复的A-Party、Total IMEI单元格置空
result.loc[result.duplicated(['A-Party', 'Total IMEI']), ['A-Party', 'Total IMEI']] = ''

如果你只是需要数据不需要展示优化,跳过最后一步即可,所有行都会保留完整的A-Party和Total IMEI值,更方便后续的数据处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:24:04