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

如何按日期计算Pandas DataFrame并基于DEVICE_SN生成指定日期列

按日期处理Pandas DataFrame的解决方案

需求说明

根据DEVICE_SN匹配关联,提取df2['Date']中每个设备对应的首个日期生成新列Output,同时按日期维度简化DataFrame。

实现步骤与代码

1. 提取每个设备的首个日期

先对df2按DEVICE_SN分组,提取每组的首个日期:

import pandas as pd

# 先确保日期列是datetime类型(如果原数据是字符串格式)
df2['Date'] = pd.to_datetime(df2['Date'])

# 生成设备-首个日期的映射表
device_first_date = df2.groupby('DEVICE_SN')['Date'].first().reset_index()
device_first_date.rename(columns={'Date': 'Output'}, inplace=True)

2. 匹配生成目标列(类似VLOOKUP)

将映射表合并到目标DataFrame(假设为df1),完成匹配:

# 左连接保留原DataFrame所有数据,如需仅保留匹配项用how='inner'
result_df = df1.merge(device_first_date, on='DEVICE_SN', how='left')

3. 按日期简化DataFrame

根据需求选择简化方式:

  • 按Output和DEVICE_SN去重,保留唯一组合:
simplified_df = result_df.drop_duplicates(subset=['Output', 'DEVICE_SN'])
  • 按日期分组聚合,统计维度信息(比如每日设备数量):
aggregated_df = result_df.groupby('Output')['DEVICE_SN'].nunique().reset_index(name='Device_Count')

注意事项

  • 如果df2中同一设备有多条日期记录,groupby().first()会取数据中出现的首个日期;若需取最早日期,确保Date列已转为datetime类型即可
  • 合并时根据业务需求选择连接方式,how='left'可避免丢失原DataFrame中未匹配到的设备数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:39:39