在datetime对象的熊猫fillna

时间:2014-01-15 18:04:54

标签: python pandas

我正在尝试在datetime64 [ns]类型的列上运行fillna。当我运行类似的东西: df['date'].fillna(datetime("2000-01-01"))

我得到: TypeError: an integer is required

有什么方法吗?

3 个答案:

答案 0 :(得分:7)

这应该在0.12和0.13(刚刚发布)中起作用。

@DSM指出日期时间的构造如下:datetime.datetime(2012,1,1) 所以错误是由于未能构建您传递给fillna的值。 请注意,使用Timestamp会解析字符串。

In [3]: s = Series(date_range('20130101',periods=10))

In [4]: s.iloc[3] = pd.NaT

In [5]: s.iloc[7] = pd.NaT

In [6]: s
Out[6]: 
0   2013-01-01 00:00:00
1   2013-01-02 00:00:00
2   2013-01-03 00:00:00
3                   NaT
4   2013-01-05 00:00:00
5   2013-01-06 00:00:00
6   2013-01-07 00:00:00
7                   NaT
8   2013-01-09 00:00:00
9   2013-01-10 00:00:00
dtype: datetime64[ns]

datetime.datetime也可以使用

In [7]: s.fillna(Timestamp('20120101'))
Out[7]: 
0   2013-01-01 00:00:00
1   2013-01-02 00:00:00
2   2013-01-03 00:00:00
3   2012-01-01 00:00:00
4   2013-01-05 00:00:00
5   2013-01-06 00:00:00
6   2013-01-07 00:00:00
7   2012-01-01 00:00:00
8   2013-01-09 00:00:00
9   2013-01-10 00:00:00
dtype: datetime64[ns]

答案 1 :(得分:0)

如果您要用其他DateTime数据中的数据替换行中的df['column_with_NaT'].fillna(df['dt_column_with_thesame_index'], inplace=True) 数据,则此示例适用于动态数据。

for(i=0; i < arr.length -1; i++) {
        //swapping if num is greater than the next number.
        if(arr[i] > arr[i+1]) {
            tmp = arr[i];
            arr[i] = arr[i+1];
            arr[i+1] = tmp;
        }

    }

当我更新DateTime列中的某些行而没有更新的行具有NaT值时,这对我有用,并且需要继承旧系列数据。上面的代码解决了我的问题。抱歉英语不是很完美

答案 2 :(得分:0)

现在,df['date'].fillna(pd.Timestamp("20210730"))pandas 1.3.1 工作