我有一个DataFrame,其中包含去年的数据,但dates列中缺少一些日期
Procfile
我想创建一个日期之间的间隔的字典,因此键将是开始日期和值作为结束日期,例如:
web: npm client
server: npm start
所以我创建了一个列来指示以下内容是否存在差距:
date
0 2019-10-21
1 2019-10-29
2 2019-11-01
3 2019-11-04
4 2019-11-05
输出以下内容:
dates_gaps = {2019-10-21:2019-10-29, 2019-10-29:2019-11-01,2019-11-01:2019-11-04 ...}
我在从这里前进时遇到了麻烦
答案 0 :(得分:0)
只需将这些日期转换为datetime
,然后找出两个相邻日期之间的差额即可。
a = pd.to_datetime('1900-01-01', format='%Y-%m-%d')
b = pd.to_datetime('1900-02-01', format='%Y-%m-%d')
c = a-b
c.days # -31
答案 1 :(得分:0)
您可以添加条件以比较缺少的值,将date
列转换为Series.dt.strftime
的字符串,最后使用zip
创建字典:
diff = df['date'].diff()
s = df.loc[(diff.dt.days > 1) | diff.isna(), 'date'].dt.strftime('%Y-%m-%d')
print (s)
0 2019-10-21
1 2019-10-29
2 2019-11-01
3 2019-11-04
Name: date, dtype: object
d = dict(zip(s, s.shift(-1)[:-1]))
print (d)
{'2019-10-21': '2019-10-29', '2019-10-29': '2019-11-01', '2019-11-01': '2019-11-04'}