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

DataFrame列日期格式修改:为何遍历执行datetime.datetime.fromtimestamp(int(time))无法直接更新df[col]?

问题解析与解决方案

嘿,这个问题我之前也碰见过,咱们一步步来拆解:

为什么循环没法更新DataFrame列?

当你写for time in df[col]的时候,你遍历的其实是列中每个元素的副本,而不是直接指向DataFrame里的原始数据。你在循环里把时间戳转成datetime对象后,这个结果只存在临时变量time里,根本没和原DataFrame的列产生关联——说白了就是你改的是“复制品”,原数据自然纹丝不动。

而且额外提一句:用Python循环处理Pandas的列数据本身就不高效,Pandas的设计理念是向量化操作,循环会拖慢处理速度,数据量越大越明显。

正确更新日期格式的方法

这里有两种靠谱的方式,优先推荐第一种:

1. 使用Pandas内置的pd.to_datetime(最推荐)

Pandas专门提供了处理时间戳的工具函数,直接对整列做向量化转换,速度快代码还简洁:

import pandas as pd

# 假设你的时间戳是秒级的,unit='s';如果是毫秒就改成'ms'
df[col] = pd.to_datetime(df[col], unit='s')

这个方法会自动把整列的时间戳转换成Pandas的datetime64类型,完美适配DataFrame的列。

2. 使用apply函数(适合自定义逻辑场景)

如果你的转换逻辑更复杂(比如除了转时间戳还要加额外处理),可以用apply对列中每个元素应用转换函数:

import datetime

df[col] = df[col].apply(lambda x: datetime.datetime.fromtimestamp(int(x)))

apply会遍历列的每个元素,把转换后的结果直接赋值回原列,这样就能实现更新了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 04:27:50