Pandas重新索引以填充缺失日期,或者更好的填充方法?

11 浏览
0 Comments

Pandas重新索引以填充缺失日期,或者更好的填充方法?

我收集的数据是某家工厂的缺勤记录。有些天没有缺勤,所以该天没有数据或日期记录。然而,与其他示例不同的是,在任何一天都可能因各种原因出现多次缺勤。数据中日期与记录之间的比例并不总是1比1。

我希望的结果是这样的:

(索引)     班次          描述           实例(总数)
01-01-14   第二位面包师    纪律              0
01-01-14   第二位面包师    假期              0
01-01-14   第一位厨师      纪律              0
01-01-14   第一位厨师      假期              0
01-02-14   第二位面包师    纪律              4
01-02-14   第二位面包师    假期              3
01-02-14   第一位厨师      纪律              3
01-02-14   第一位厨师      假期              3

依此类推。这个想法是所有班次和描述在时间段内的所有天数都有值(在这个例子中是2014年1月1日-2014年12月31日)。

我阅读了几个示例,最接近实现这个目标的是这里

ts = pd.read_csv('Absentee_Data_2.csv'
                , encoding = 'utf-8'
                ,parse_dates=[3]
                ,index_col=3
                ,dayfirst=True
                )
idx =  pd.date_range('01.01.2009', '12.31.2017')
ts.index = pd.DatetimeIndex(ts.index)
# ts = ts.reindex(idx, fill_value='NaN')
df = pd.DataFrame(index = idx)
df1 = df.join(ts, how='left')

但是,当我取消ts = ts.reindex(idx, fill_value='NaN')的注释时,我会收到错误消息。我尝试了至少10种其他方法来实现我想要的结果,所以我不确定这是否是正确的方法,但它似乎让我离进展最近。

这是一些示例数据:

描述       无故   实例   日期         班次
纪律       FALSE  1    Jan 2 2014  第二位面包师
假期       TRUE   2    Jan 2 2014  第一位厨师
纪律       FALSE  3    Jan 2 2014  第二位面包师
假期       TRUE   1    Jan 2 2014  第一位厨师
纪律       FALSE  2    Apr 8 2014  第二位面包师
假期       TRUE   3    Apr 8 2014  第一位厨师
纪律       FALSE  1    Jun 1 2014  第二位面包师
假期       TRUE   2    Jun 1 2014  第一位厨师
纪律       FALSE  3    Jun 1 2014  第二位面包师
假期       TRUE   1    Jun 1 2014  第一位厨师
假期       TRUE   2    Jul 5 2014  第一位厨师
纪律       FALSE  3    Jul 5 2014  第二位面包师
假期       TRUE   2    Dec 3 2014  第一位厨师

非常感谢您的帮助,我是个新手,已经两天了,没有太多进展。我真的很感激这里的人们提供答案,但更重要的是解答的教学。

0