Python 熊猫重复日期的处理

Python 熊猫重复日期的处理,python,pandas,date,duplicates,time-series,Python,Pandas,Date,Duplicates,Time Series,问题是,我有一个大型数据集,其中缺少日期条目,而且重复。我不能删除任何一个,因此,我需要添加缺少的日期,并将相应的列设置为NaN。 下面是它的示例代码 df = pd.DataFrame({ 'timestamps': pd.to_datetime( ['2016-11-15 1:00','2016-11-16 2:00','2016-11-16 3:00','2016-11-18 4:00']), 'values':['a','b','c','d']}) df.index = pd.

问题是,我有一个大型数据集,其中缺少日期条目,而且重复。我不能删除任何一个,因此,我需要添加缺少的日期,并将相应的列设置为NaN。 下面是它的示例代码

df = pd.DataFrame({
'timestamps': pd.to_datetime(
    ['2016-11-15 1:00','2016-11-16 2:00','2016-11-16 3:00','2016-11-18 4:00']),
'values':['a','b','c','d']})
 df.index = pd.DatetimeIndex(df['timestamps']).floor('D')

 all_days = pd.date_range(df.index.min(), df.index.max(), freq='D')
在搜索时,我发现我们不应该使用
df.reindex()
,因为它不能处理重复项。因此,另一个解决方案是使用
df.loc[所有天]
但是,每次我把它用作
df.loc[all_days]=[0,0]
它所说的只是我需要添加到数据框中的缺失日期不在索引中

应该是这样的:

           timestamps             values
2016-11-15  "2016-11-15 01:00:00"  a
2016-11-16  "2016-11-16 02:00:00"  b
2016-11-16  "2016-11-16 03:00:00"  c
2016-11-18  "2016-11-18 04:00:00"  d`
为此:

timestamps             values
2016-11-15  "2016-11-15 01:00:00"  a
2016-11-16  "2016-11-16 02:00:00"  b
2016-11-16  "2016-11-16 03:00:00"  c 
2016-11-17  NaN                    NaN
2016-11-18  "2016-11-18 04:00:00"  d

您可以将
all_days
设置为数据帧,然后使用
df
进行外部联接,然后删除新的不必要的列:

new_df = df.join(all_days.to_frame(), how='outer').drop(0,1)

>>> new_df
                    timestamps values
2016-11-15 2016-11-15 01:00:00      a
2016-11-16 2016-11-16 02:00:00      b
2016-11-16 2016-11-16 03:00:00      c
2016-11-17                 NaT    NaN
2016-11-18 2016-11-18 04:00:00      d

很好。使用merge非常好。谢谢@ScottBoston!但是我意识到使用
join
比使用
merge
要简洁得多(尽管两者都可以使用)