Python中如何仅显示Timestamp列的日期部分?
解决Pandas Timestamp列仅显示日期部分的问题
嗨,我来帮你搞定这个问题!你遇到的情况是因为pd.to_datetime只是把字符串解析成datetime类型的对象,本身还是会保留时分秒信息,而且你写的format参数还多了个末尾的%,这也是导致解析后没变化的原因之一。下面给你几种实用的解决方法:
方法一:提取Python日期对象
先把列正确转换为datetime类型,再用dt.date提取纯日期部分,得到的是Python原生的date对象:
# 第一步:正确解析datetime(format要匹配你的输入格式) df["FileReceivedTime"] = pd.to_datetime(df["FileReceivedTime"], format="%Y-%m-%d %H:%M:%S") # 第二步:提取日期部分 df["OnlyDate"] = df["FileReceivedTime"].dt.date
这样OnlyDate列里就只会显示类似2018-05-03的日期内容啦。
方法二:保留Pandas datetime类型并清除时分秒
如果你想保持列的类型还是Pandas的datetime64,可以用dt.floor('D')或者dt.normalize()把时分秒归零,显示的时候就只会展示日期部分:
# 先确保列是datetime类型(Pandas通常能自动识别标准格式,不用手动写format) df["FileReceivedTime"] = pd.to_datetime(df["FileReceivedTime"]) # 用floor方法把时间截断到天 df["OnlyDate"] = df["FileReceivedTime"].dt.floor('D') # 或者用normalize方法,效果一致 # df["OnlyDate"] = df["FileReceivedTime"].dt.normalize()
此时OnlyDate列的内容会是2018-05-03 00:00:00,你可以通过显示设置只查看日期部分,或者用下面的方法转成纯字符串日期。
方法三:转成纯字符串格式的日期
如果需要直接得到字符串形式的日期(比如"2018-05-03"),可以用dt.strftime指定输出格式:
df["FileReceivedTime"] = pd.to_datetime(df["FileReceivedTime"]) df["OnlyDateStr"] = df["FileReceivedTime"].dt.strftime("%Y-%m-%d")
最后再提醒一下:你之前写的format="%Y%m%d%"是错误的,多了一个末尾的%,如果你的输入是2018-05-03 07:20:17这种带横杠和时分秒的标准格式,其实不用手动指定format,Pandas也能自动识别哦。
内容的提问来源于stack exchange,提问作者dark horse
相关产品推荐
相关产品推荐

