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

使用pivot_table按日期和小时透视DataFrame遇AttributeError求助

问题解答:pivot_table中datetime属性调用错误修复

错误原因

你写的["date"].dt.date是对列表对象调用dt属性,但列表本身没有dt方法。dt是pandas中datetime类型Series的专属属性,必须通过DataFrame的列(即Series对象)来调用,不能直接对列名字符串的列表使用。

正确写法

方法一:直接在参数中提取datetime属性

需要从DataFrame中取出date列(得到Series),再调用dt属性提取日期和小时部分,作为pivot_table的索引和列参数:

import pandas as pd

pivot_df = pd.pivot_table(
    df_fuel,
    index=df_fuel['date'].dt.date,
    columns=df_fuel['date'].dt.hour,
    values='Fuel_price'
)

方法二:预先创建辅助列(适合大型数据集)

先给DataFrame新增日期和小时列,再用列名做透视,这种方式在处理大型数据集时性能更稳定,后续复用维度也更方便:

import pandas as pd

# 新增辅助列
df_fuel['date_only'] = df_fuel['date'].dt.date
df_fuel['hour_only'] = df_fuel['date'].dt.hour

# 基于新列生成透视表
pivot_df = pd.pivot_table(
    df_fuel,
    index='date_only',
    columns='hour_only',
    values='Fuel_price'
)

补充提示

  • 当values仅对应单一列时,直接传入列名字符串即可,无需用列表包裹,这样最终生成的DataFrame结构更简洁。
  • 预先创建辅助列的方式,能避免在pivot_table中重复计算dt属性,对于大型数据集来说,能减少重复计算带来的性能损耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:40:34