使用PANDAS在Python中检查日期列表是否已完成



我有一个文本文件,其中包含一个时间序列的开始和结束日期。文件的其余部分包含3列:开始日,结束日和价值 - 如下所示。

19580101 20181231
19580101 19580131     4.2
19580201 19580228    -1.6
19580301 19580331    -4.9
.
.
.
20181001 20181031    -8.2
20181101 20181130    -3.8
20181201 20181231     3.1

我想随着时间的推移在图上显示值,但首先要检查日期是否完成。

这是我代码的一部分:

import numpy as np
import pandas as pd
df = pd.read_fwf('file.txt',header=None)
head = df.loc[0] #extract header
df = df.drop(0) #delete first line
date_seq = pd.to_datetime(df.loc[:,0]) #convert column 0 to datetime
start_date = str(int(head[0])) #'19850101'
end_date = str(int(head[1])) #'20181231'
#synthesize date range:
strt = pd.to_datetime(start_date,format='%Y%m%d')
ends = pd.to_datetime(end_date,format='%Y%m%d')
date_rng = pd.date_range(start=strt, end=ends, freq='MS')
#compare extracted and synthesized date sequences:
diff = date_seq - date_rng
print diff.sum()

输出为:0天00:00:00

这似乎有些低效。有更优雅的方式吗?

您可以查看该系列的差异,而不是创建第二个系列。

df['date_check'] = df.date_col.diff()
df.date_check.value_counts()

这将为您提供系列中所有差距的列表。如果您的数据框中有许多系列,这也将与groupby一起使用。

最新更新