我有一个名为date_dict的字典,以datetime日期为键,对应于观察到的整数计数。我将其转换为具有被屏蔽观测值的稀疏系列/数据框,并希望将其连接或转换为具有连续日期的系列/数据框。这个丑陋的列表理解是我的方法,以解决pandas显然无法自动将datetime日期对象转换为适当的DateTime索引。
df1 = pd.DataFrame(data=date_dict.values(),
index=[datetime.datetime.combine(i, datetime.time())
for i in date_dict.keys()],
columns=['Name'])
df1 = df1.sort(axis=0)
这个示例有1258个观测结果,其DateTime索引从2003-06-24到2012-11-07。
df1.head()
Name
Date
2003-06-24 2
2003-08-13 1
2003-08-19 2
2003-08-22 1
2003-08-24 5
我可以创建一个带有连续 DateTime 索引的空数据框,但这会引入一个不必要的列并且看起来很笨重。我觉得我可能错过了一种更优雅的解决方案,涉及到连接(join)。
df2 = pd.DataFrame(data=None,columns=['Empty'],
index=pd.DateRange(min(date_dict.keys()),
max(date_dict.keys())))
df3 = df1.join(df2,how='right')
df3.head()
Name Empty
2003-06-24 2 NaN
2003-06-25 NaN NaN
2003-06-26 NaN NaN
2003-06-27 NaN NaN
2003-06-30 NaN NaN
有没有一种更简单、更优雅的方法从一个稀疏的数据框中填充连续的数据框,以便有(1) 连续的索引, (2) NaN变成0,且没有剩余为空的列在数据框中?
Name
2003-06-24 2
2003-06-25 0
2003-06-26 0
2003-06-27 0
2003-06-30 0