Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 返回丢失的日期_Python 3.x_Pandas_Dataframe_Datetime - Fatal编程技术网

Python 3.x 返回丢失的日期

Python 3.x 返回丢失的日期,python-3.x,pandas,dataframe,datetime,Python 3.x,Pandas,Dataframe,Datetime,我有一个包含1600个日期的CSV文件,我正在尝试查找所有丢失的日期。例如: 2019年10月3日 2019年10月1日 29-09-2019 2019年9月28日 应返回日期:2019年10月2日,2019年9月30日 以下是我写的: with open('measurements.csv','r') as csvfile: df = pd.read_csv(csvfile, delimiter=',') timestamps = df['observation_time'] #Getti

我有一个包含1600个日期的CSV文件,我正在尝试查找所有丢失的日期。例如:
2019年10月3日
2019年10月1日
29-09-2019
2019年9月28日
应返回日期:2019年10月2日,2019年9月30日

以下是我写的:

with open('measurements.csv','r') as csvfile:
df = pd.read_csv(csvfile,  delimiter=',')

timestamps = df['observation_time'] #Getting only the date

for line in timestamps:
date_str = line
try: # convert string to time
    date = date_time_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
    dates.append(date) 
except:
    print("Date parsing failed")

dates = pd.DataFrame(dates,columns =['actual_date']) 

pd.date_range(start = dates.min(), end = dates.max()).difference(dates.index)
这将返回一个错误:

“无法转换输入[实际日期2018-09-17 22:00:00数据类型: 类型为的datetime64[ns]] 时间戳“

Idea用于将所有缺少的值添加到
DatetimeIndex
,因此可以通过以下方式进行筛选:


感谢您的快速回答,我看到在尝试执行代码时出现了一个错误:ValueError:cannotreindex from replicateaxis@12majore-您能否测试是否将
df1=df.set_index(df['observation_time']).sort_index().asfreq('d')
更改为
df1=df.set_index(df['observation_time'])。删除重复项().sort_index().asfreq('d')
df['observation_time'] = pd.to_datetime(df['observation_time'], dayfirst=True)
df1 = df.set_index(df['observation_time']).sort_index().asfreq('d')
print (df1)
                 observation_time
observation_time                 
2019-09-28             2019-09-28
2019-09-29             2019-09-29
2019-09-30                    NaT
2019-10-01             2019-10-01
2019-10-02                    NaT
2019-10-03             2019-10-03

dates = df1.index[df1['observation_time'].isna()]
print (dates )
DatetimeIndex(['2019-09-30', '2019-10-02'], dtype='datetime64[ns]', 
name='observation_time', freq=None)