Python逐日填补Excel中的日期并用0值填充缺失日期的数据

本文介绍基于Python 语言,读取一个不同的列表示不同的日期.csv格式文件,将其中缺失的日期数值 加以填补;并用0值对这些缺失日期对应的数据加以填充的方法。

首先,我们明确一下本文的需求。现在有一个.csv格式文件,其第一列表示日期,用2021001这样的格式记录每一天的日期;其后面几列则是这一日期对应的数据。如下图所示。

从上图可以看到,第一列(紫色框内)的日期有很多缺失值,例如一下子就从第001天跳到了005天,然后又直接到了042天。我们希望,基于这一文件,首先逐日填补 缺失的日期;其次,对于这些缺失日期的数据(后面四列),就都用0值来填充即可。最后,我们希望用一个新的.csv格式文件来存储我们上述修改好的数据。

知道了需求,我们就可以开始代码的撰写;具体代码如下。

python 复制代码
# -*- coding: utf-8 -*-
"""
Created on Thu Oct  5 14:58:19 2023

@author: fkxxgis
"""

import pandas as pd

input_file = "E:/04_Reconstruction/03_Image/Data.csv"
output_file = "E:/04_Reconstruction/03_Image/Data_AllYear.csv"

df = pd.read_csv(input_file)
df['time'] = pd.to_datetime(df['time'], format='%Y%j')

df.set_index('time', inplace=True)

start_date = pd.to_datetime('2021001', format='%Y%j')
end_date = pd.to_datetime('2021365', format='%Y%j')
date_range = pd.date_range(start=start_date, end=end_date, freq='D')

df_filled = df.reindex(date_range, fill_value=0)

df_filled.reset_index(inplace=True)
df_filled['time'] = df_filled['index'].dt.strftime('%Y%j')

df_filled.drop(df_filled.columns[0], axis=1, inplace=True)

cols = list(df_filled.columns)
cols = [cols[-1]] + cols[:-1]
df_filled = df_filled[cols]

df_filled.to_csv(output_file, index=False)

其中,我们首先导入所需的库,并定义输入和输出文件的路径。随后,我们使用pd.read_csv方法读取输入文件,并将数据存储于df中。

接下来,我们使用pd.to_datetime方法将df中的时间列转换为日期时间格式,并使用set_index方法将时间列设置为DataFrame的索引。

随后,计算需要填补的日期范围------我们将字符串'2021001'转换为日期时间格式并作为结束日期,将字符串'2021365'转换为日期时间格式并作为结束日期,使用pd.date_range方法生成完整的日期范围,频率为每天。

接下来,使用reindex方法对DataFrame 进行重新索引,以包含完整的日期范围,并使用0填充缺失值。其次,使用reset_index方法将索引列还原为普通列,并使用dt.strftime方法将时间列转换回字符串格式。

最后,我们使用drop方法删除第一列(否则最终输出的结果文件的第一列是前面的索引值,而不是time列),并将最后一列(也就是time列)移到第一列。随后,即可将修改后的DataFrame 保存到输出文件中,使用to_csv方法,并设置index=False以避免保存索引列。

运行上述代码,即可得到如下图所示的结果文件。

可以看到,此时文件中已经是逐日的数据了,且对于那些新增日期的数据,都是0来填充的。

至此,大功告成。

欢迎关注:疯狂学习GIS

相关推荐
点云SLAM9 分钟前
PyTorch 中.backward() 详解使用
人工智能·pytorch·python·深度学习·算法·机器学习·机器人
B1118521Y4638 分钟前
flask的使用
后端·python·flask
Learn Beyond Limits1 小时前
Transfer Learning|迁移学习
人工智能·python·深度学习·神经网络·机器学习·ai·吴恩达
love530love3 小时前
【保姆级教程】阿里 Wan2.1-T2V-14B 模型本地部署全流程:从环境配置到视频生成(附避坑指南)
人工智能·windows·python·开源·大模型·github·音视频
He1955013 小时前
Go初级之十:错误处理与程序健壮性
开发语言·python·golang
和鲸社区4 小时前
《斯坦福CS336》作业1开源,从0手搓大模型|代码复现+免环境配置
人工智能·python·深度学习·计算机视觉·语言模型·自然语言处理·nlp
豌豆花下猫5 小时前
Python 潮流周刊#118:Python 异步为何不够流行?(摘要)
后端·python·ai
THMAIL5 小时前
深度学习从入门到精通 - LSTM与GRU深度剖析:破解长序列记忆遗忘困境
人工智能·python·深度学习·算法·机器学习·逻辑回归·lstm
wheeldown5 小时前
【数学建模】数据预处理入门:从理论到动手操作
python·数学建模·matlab·python3.11
多打代码6 小时前
2025.09.05 用队列实现栈 & 有效的括号 & 删除字符串中的所有相邻重复项
python·算法