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

Pandas按相同日期分组可视化列值及解决dt属性错误问题

解决步骤

1. 修复日期列类型错误

你遇到的AttributeError是因为Date列当前是字符串类型,并非datetime格式,无法使用.dt访问器。先将其转换为datetime类型:

import pandas as pd

# 转换Date列为datetime格式
df['Date'] = pd.to_datetime(df['Date'])

2. 按日期分组并保留对应Col1值

如果只是为了可视化时让同一日期的Col1值在X轴同一位置显示,不需要额外分组聚合——直接用原始数据绘图即可,可视化库会自动将相同日期的点归到同一X坐标下。

如果需要将每个日期的Col1值整理成列表形式(用于后续数据处理),可以执行:

# 按日期分组,将Col1值合并为列表
grouped_df = df.groupby('Date')['Col1'].apply(list).reset_index()

3. 可视化示例

以下两种常见可视化方式,可满足X轴显示单个日期、保留所有对应Col1值的需求:

分布点图(展示所有数据点)

用seaborn的stripplot可在同一日期下展示全部Col1值,避免点重叠可开启抖动:

import seaborn as sns
import matplotlib.pyplot as plt

sns.stripplot(x='Date', y='Col1', data=df, jitter=True)
plt.xticks(rotation=45)  # 旋转日期标签防止重叠
plt.show()

箱线图(展示日期对应数据分布)

若需查看每个日期下Col1值的分布特征:

sns.boxplot(x='Date', y='Col1', data=df)
plt.xticks(rotation=45)
plt.show()

4. 处理'Min-sec-msec'格式的时间列

对于该格式的时间列,可转换为timedelta类型以便后续操作:

# 假设时间列名为Time
df['Time'] = pd.to_timedelta(df['Time'])

# 示例:提取总秒数
df['Total_Seconds'] = df['Time'].dt.total_seconds()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:03:09