我有一个pandas DataFrame,我试图更改其中一个单元格'时间戳到不同的时间戳。但是,我没有得到我期望的结果。这就是我所拥有的:
>>> df = pd.DataFrame({"d": [np.datetime64('2013-07-14T10:30:30.521Z'), np.datetime64('2013-07-21T10:30:30.521Z')]})
>>> df
d
0 2013-07-14 10:30:30.521000
1 2013-07-21 10:30:30.521000
>>> df.iloc[-1, df.columns.get_loc("d")] = np.datetime64('2013-08-29T10:30:30.521Z')
>>> df
d
0 2013-07-14 10:30:30.521000
1 1970-01-01 00:22:57.772230521
如示例所示,df.loc[1, "d"]
获取的时间戳不是我分配给该单元格的时间戳。我不明白这种行为或我出错的地方。还有其他方法需要更改时间戳的值吗?
编辑:以上只是一个简单的例子。我的实际df有很多列,而不仅仅是1.我使用pandas版本0.16.1(并且无法更改版本)。
答案 0 :(得分:1)
因为你的df只有一列你可以这样做:
In [29]: df
Out[29]:
d
0 2013-07-14 10:30:30.521
1 2013-07-21 10:30:30.521
In [30]: df.iloc[-1] = pd.to_datetime('2013-08-29T10:30:30.521Z')
In [31]: df
Out[31]:
d
0 2013-07-14 10:30:30.521
1 2013-08-29 10:30:30.521
更新:如果您的DF中有多列:
In [47]: df
Out[47]:
d a
0 2013-07-14 10:30:30.521 1
1 2013-07-21 10:30:30.521 1
In [48]: df.loc[df.index[-1], 'd'] = pd.to_datetime('2013-08-29T10:30:30.521Z')
In [49]: df
Out[49]:
d a
0 2013-07-14 10:30:30.521 1
1 2013-08-29 10:30:30.521 1