是否可以将缺少的日期列从创建的date_range添加到分组的数据帧df中,而无需for循环并将零填充为缺少的值? date_range有7个日期元素。 df有4个日期列。那么如何将3个缺少的列添加到df?
before_action
答案 0 :(得分:1)
我将数据表旋转为行,然后使用pandas的.asfreq函数,如下所示:
DataFrame.asfreq(freq,method = None,how = None,normalize = False,fill_value = None)
来源: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.asfreq.html
答案 1 :(得分:1)
感谢Sina Shabani提供了将日期列设置为行的线索。在这种情况下,出现了更合适的设置日期作为索引并使用.reindex的方法
df = (df.groupby(['date', 'name'])['name']
.size()
.reset_index(name='count')
.pivot(index='date', columns='name', values='count')
.fillna(0))
df
name alex kovar lyam sogan yamo
date
2018-06-07 0.0 0.0 0.0 1.0 0.0
2018-06-08 0.0 2.0 0.0 0.0 0.0
2018-06-09 2.0 1.0 0.0 0.0 0.0
2018-06-10 0.0 0.0 1.0 0.0 3.0
df.index = pd.DatetimeIndex(df.index)
df = (df.reindex(pd.date_range(start, freq='D', periods=7), fill_value=0)
.sort_index())
df
name alex kovar lyam sogan yamo
2018-06-04 0.0 0.0 0.0 0.0 0.0
2018-06-05 0.0 0.0 0.0 0.0 0.0
2018-06-06 0.0 0.0 0.0 0.0 0.0
2018-06-07 0.0 0.0 0.0 1.0 0.0
2018-06-08 0.0 2.0 0.0 0.0 0.0
2018-06-09 2.0 1.0 0.0 0.0 0.0
2018-06-10 0.0 0.0 1.0 0.0 3.0
df.T
date 2018-06-07 00:00:00 2018-06-08 00:00:00 2018-06-09 00:00:00 2018-06-10 00:00:00
name
alex 0.0 0.0 2.0 0.0
kovar 0.0 2.0 1.0 0.0
lyam 0.0 0.0 0.0 1.0
sogan 1.0 0.0 0.0 0.0
yamo 0.0 0.0 0.0 3.0