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

如何将字典中DataFrame的'%Y%m%d%H%M'格式转为datetime并替换原列

解决字典中DataFrame列的日期格式转换与替换问题

你原来的代码问题在于两层循环逐行处理的方式既低效,又没有把转换后的datetime值真正赋值回col1列,所以才看不到替换效果。其实pandas本身就支持批量处理这类格式转换,完全不用手动遍历每一行,我给你优化一下:

优化后的完整代码

import pandas as pd

df1 = pd.DataFrame(data= {'col1':['201706202359' , '201706220510'], "col2" : ['0', '1']})
df2 = pd.DataFrame(data= {'col1':['201707202300' , '201706230600'],"col2" : ['0', '1']})
dfs = {'df1' : df1, 'df2' : df2}

# 遍历字典中的每个DataFrame,批量转换并替换col1列
for name, df in dfs.items():
    df['col1'] = pd.to_datetime(df['col1'], format='%Y%m%d%H%M')

为什么这样能解决问题?

  • pd.to_datetime()可以直接接收整个df['col1'](也就是pandas的Series对象)作为输入,指定format='%Y%m%d%H%M'来匹配你的日期字符串格式,它会自动批量把所有字符串转换成datetime类型,效率比逐行循环高得多。
  • 直接通过df['col1'] = ...赋值,就能把转换后的datetime序列直接替换掉原来的col1列,一步到位。

原代码的问题补充

你之前的循环里,只是计算出了datetime值,但没有执行类似df['col1'].iloc[i] = datetime的赋值操作,而且即使加上这行,逐行处理在数据量较大时会非常影响性能,所以优先用pandas的批量操作才是最佳实践。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:18:31