我一直在尝试做一些我认为很简单的事情,但是我遇到了一个我不了解的问题。我有两列:date_published
和date_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
,但结果是相同的。我想念什么?
答案 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
引用列(否则,它将尝试检查传递的标签的索引)。