Python 熊猫在不应该的时候返回NaT
我的数据帧是Python 熊猫在不应该的时候返回NaT,python,pandas,Python,Pandas,我的数据帧是 time NTCS001G002 NTCS001W005 0 2013-05-30 23:00:00 NaN NaN 1 2013-06-30 23:00:00 249 60 2 2013-07-31 23:00:00 161 2 3 2013-09-01 23:00:00 151 11 4 2013-09-04 23
time NTCS001G002 NTCS001W005
0 2013-05-30 23:00:00 NaN NaN
1 2013-06-30 23:00:00 249 60
2 2013-07-31 23:00:00 161 2
3 2013-09-01 23:00:00 151 11
4 2013-09-04 23:00:00 14 0
5 2013-10-01 23:00:00 162 64
6 2013-11-01 00:00:00 281 175
7 2013-12-03 00:00:00 482 168
8 2014-01-02 00:00:00 378 NaN
9 2014-01-03 00:00:00 NaN NaN
10 2014-02-03 00:00:00 NaN 167
11 2014-03-03 00:00:00 502 167
当我像这样迭代行时
对于索引,diff.iterrows()中的行:
打印“err”,row.tolist()
我不确定那些NaT是不是一个bug。我想他们应该是南
熊猫可以不返回NaT吗?如果不能,我如何检查它们,因为我将不得不在列表中替换它们
感谢原因是ItErrors将每一行转换为一个系列,并且这一行转换为datetime64
In [11]: pd.Series([pd.Timestamp('2014-01-03 00:00:00', tz=None), np.nan, np.nan])
Out[11]:
0 2014-01-03
1 NaT
2 NaT
dtype: datetime64[ns]
值
NaT
表示“非时间”,相当于时间戳值的nan
您能说出数据帧的
d类型吗?尝试将列强制转换为浮点值。这很有趣——第10行有一个nan
,而第9行有一个NaT
。你能展示一下这个数据框是如何定义的吗?使用pd.read\u table
天真地加载数据不会重现问题。我可以使用更简单的情况重现问题。我认为这泄露了关于“ItErrors不跨行保留数据类型”的具体实现细节(如文档所说);e、 你到底想在这里做什么?
In [11]: pd.Series([pd.Timestamp('2014-01-03 00:00:00', tz=None), np.nan, np.nan])
Out[11]:
0 2014-01-03
1 NaT
2 NaT
dtype: datetime64[ns]