用另一个列值填充缺少的日期

时间:2019-01-08 21:05:26

标签: python pandas date

我一直在尝试做一些我认为很简单的事情,但是我遇到了一个我不了解的问题。我有两列:date_publisheddate_obtained,当然,我有date_obtained的所有数据,但没有date_published的所有数据。我的方法是用得到的日期减去1天(可能也是中间值的差异,来填充丢失的date_published)。

df看起来像这样:

date_published    date_obtained
 2017-12-20        2017-12-22
    NaT            2017-12-23

然后应如下所示:

date_published    date_obtained
 2017-12-20        2017-12-22
 2017-12-22        2017-12-23

我尝试了以下操作:

date_delta=(Df.date_obtained-datetime.timedelta(days=1))
Df.loc['date_published']=Df.date_published.fillna((date_delta))

但是,令我惊讶的是,这没有填满任何NaT,而且还在我的所有数据框中创建了一个缺失的值。还尝试仅填充Df.date_obtained,但结果是相同的。我想念什么?

1 个答案:

答案 0 :(得分:1)

您快要在那里了,您应该要么完成:

u = df.date_obtained - pd.Timedelta(days=1)
df['date_published'] = df.date_published.fillna(u)

或者,

df.loc[:, 'date_published'] = df.date_published.fillna(u)

使用loc引用列(否则,它将尝试检查传递的标签的索引)。