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

Pandas按日期统计唯一Host数求助:输出不符合预期

问题分析

你当前代码输出全为1的核心原因是按精确到秒的完整timestamp分组,每一行的timestamp都唯一,导致每个分组的唯一host数必然是1。另外,手动减去7小时的处理不严谨,无法适配日志中存在的-0800偏移量。

修正步骤
  1. 保留pandas对带时区时间戳的原生解析能力,无需手动加减小时
  2. 从时间戳中提取日期维度(需处理跨天情况,建议转换为UTC后取日期)
  3. 按日期分组统计唯一host数量
修正后代码
import pandas as pd

# 复制目标列到temp表
temp = Mainpanda[['timestamp', 'host']].copy()

# 正确解析带时区偏移的时间戳
temp['timestamp'] = pd.to_datetime(temp['timestamp'], format='%d/%b/%Y:%H:%M:%S %z')

# 转换为UTC时间并提取日期(自动处理跨天调整)
temp['date'] = temp['timestamp'].dt.tz_convert('UTC').dt.date

# 按日期分组,统计每日唯一host数
daily_unique_hosts = temp.groupby('date')['host'].nunique().reset_index()

# 按日期排序
daily_unique_hosts = daily_unique_hosts.sort_values(by='date')

# 转换为目标列表格式
result = daily_unique_hosts['host'].tolist()

print(result)
说明
  • 用dt.tz_convert('UTC')将带时区的时间统一转换为UTC,自动处理跨天场景(比如-0700时区的22点会转换为UTC次日5点,日期自动调整为次日)
  • 用dt.date提取日期作为分组依据,确保同一日期的所有记录被归为一组
  • 针对你的示例日志,运行后会输出[1, 1, 1, 2, 1, 1],按日期排序后与你的期望一致(若需调整排序顺序,可修改sort_values参数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:05:33