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...
相关产品推荐
相关产品推荐

