吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 484|回复: 6
收起左侧

[求助] pandas datetime.dt.strftime 格式化后导出到Excel

[复制链接]
1990chs 发表于 2024-11-27 19:19
使用pandas处理数据,其中时间使用下面的代码来提取时间部分(不要日期),然后导出到Excel中,在画散点图发现无法识别成时间格式,查了一下,经过下面的处理,类线好像变成str格式了,不知道改怎么处理,才能在Excel中识别时间(仅包含时间,不含有日期)?
其中原始的数据中时间格式类线“2012-11-23 11:12:23”,只提取"11:12:23"部分。
[Python] 纯文本查看 复制代码
df["Times"]=pd.to_datetime(df["Times"]).dt.strftime("%H:%M:%S")

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pyjiujiu 发表于 2024-11-27 20:39
本帖最后由 pyjiujiu 于 2024-11-27 20:45 编辑

这样是很奇怪的操作
pd.to_datetime(df["Times"])  本身会将 这个column --> 转变为 dtype: datetime64 格式(这是 pandas 识别time的数据格式)
(如果自己写的 奇怪的格式,识别不了,就调用 自定义的format 参数)

而你再接上dt.strftime("%H:%M:%S") --> 实际上 又将其转变为普通的 object 格式(也就是 pandas中 普通string的格式)

当然你可以,继续接龙 df['time'] = pd.to_datetime(df['time']),,这样也是可以的
但不要去砍掉 年月信息是最好的,你要excel 显示,可以自己设置单元格格式(时间里面)(或者重新复制一个column出来)
(# pandas 里面的datetime 正是是吊打Excel 的卖点)
zzt5211314 发表于 2024-11-28 09:15
 楼主| 1990chs 发表于 2024-11-28 09:23
pyjiujiu 发表于 2024-11-27 20:39
这样是很奇怪的操作
pd.to_datetime(df["Times"])  本身会将 这个column --> 转变为 dtype: datetime64 格 ...

主要是,df.plot画图的时候不想显示日期,我在想想有没有其他的办法吧,谢谢!
 楼主| 1990chs 发表于 2024-11-28 10:06
pyjiujiu 发表于 2024-11-27 20:39
这样是很奇怪的操作
pd.to_datetime(df["Times"])  本身会将 这个column --> 转变为 dtype: datetime64 格 ...

就是在plot画图的时候,横轴想显示小时-分钟-秒,但是用DateFormatter格式下来显示不对,秒不显示
[Python] 纯文本查看 复制代码
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter
 
df = pd.DataFrame({
    'date': pd.to_datetime(['2021-01-01 10:20:21', '2021-01-01 11:19:34', '2021-01-01 12:34:56']),
    'value': [10, 20, 30]
})
 
# 转换日期时间为时间
# df['time'] = df['date'].dt.time
df['time'] = df['date']

 
# 绘制图表,使用时间作为横坐标
ax = df.plot(x='time', y='value')
 
# 设置横坐标的格式,只显示时间
ax.xaxis.set_major_formatter(DateFormatter('%H:%M:%S'))
 
plt.show()

Kuukyaku 发表于 2024-11-28 15:36
因为pandas的日期时间只有一种类型,Timestamp,既包含了日期又包含了时间,没有“仅时间”。“仅日期”倒可以通过把时间设为0点0时0分0秒来曲线救国,但是”仅时间“似乎难度有点大,最好强行指定一个日期?

比如

[Python] 纯文本查看 复制代码
df["Times"]=pd.to_datetime(pd.to_datetime(df["Times"]).dt.strftime("2024-11-28 %H:%M:%S"))
 楼主| 1990chs 发表于 2024-11-28 19:24
Kuukyaku 发表于 2024-11-28 15:36
因为pandas的日期时间只有一种类型,Timestamp,既包含了日期又包含了时间,没有“仅时间”。“仅日期”倒 ...

我曲线救国了,使用
[Python] 纯文本查看 复制代码
df["Times"].dt.strftime("%H:%M:%S")

获取时间,在画图的时候重新插入一列,画完图在删掉,这样导出的Excel中时间格式就认了。
就是比较麻烦
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-5 06:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表