前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pandas案例精进 | 无数据记录的日期如何填充?

Pandas案例精进 | 无数据记录的日期如何填充?

作者头像
朱小五
发布2021-10-18 17:35:08
2.5K0
发布2021-10-18 17:35:08
举报
文章被收录于专栏:凹凸玩数据凹凸玩数据

因业务需要,每周需要统计每天提交资源数量,但提交时间不定,可能会有某一天或者某几天没有提,那么如何将没有数据的日期也填充进去呢?

如上图所示,就缺少2021-09-04、2021-09-05、2021-09-08三天的数据,需要增加其记录并设置提交量为0。

实战

刚开始我用的是比较笨的方法,直接复制到Excel,手动将日期往下偏移,差哪天补哪天,次数多了就累了,QAQ~如果需要一个月、一个季度、一年的数据呢?这样一个一个手动偏移,还没开始淦就已经被吓趴下了~

所以,我就开始想,有没有什么方法可以补上日期。

der,为了不让自己太累,点子就有了。

这样不就可以出来我想要的结果了吗~

说干就干,先来填充一个日期序列了来~

代码语言:javascript
复制
# 习惯性导入包
import pandas as pd
import numpy as np
import time,datetime

# 填充日期序列
dt = pd.DataFrame(pd.date_range("2021-9-3", periods=7,freq='D')) 
dt.columns = ["日期"] 
dt

接着就开始导入有提交数据的表。

代码语言:javascript
复制
df = pd.read_excel("提交表.xlsx")
df

dt表出来了,提交表df也出来,想要实现目的,直接左连接即可。

代码语言:javascript
复制
df_new = pd.merge(dt,df,how='left',on="日期")
df_new

结果,报错了

果然,df的日期格式是object类型,而dt是日期格式~

所以,要把df的日期也改成对应的格式才能join。

解决问题

如何将series 的object类型的日期改成日期格式呢?

infer_datetime_format这个参数设置为True 就可以了,Pandas将会尝试转换为日期类型。

具体语法如下所示:

代码语言:javascript
复制
df["日期"] = pd.to_datetime(df["日期"], infer_datetime_format=True)

另外,我还百度过设置errors 参数为 ='coerce'。Pandas会遇到不能转换的数据就会赋值为NaN,但这个方法并不太适用于我这个需求。

代码语言:javascript
复制
df_new = pd.merge(dt, df, how='left', on="日期")
df_new

看NaN有点不舒服,可以设置为0,这样就看着顺眼点啦~

代码语言:javascript
复制
df_new['搜狗提交量']=df_new['搜狗提交量'].fillna(0)
df_new

这样就可以完成了,我每次需要十几分钟的工作。

以上就是我关于Pandas在工作上的分享,希望能帮助到大家。

下载练习数据:https://www.lanzoui.com/iBAhpv8ym4j

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 凹凸数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实战
  • 解决问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档