熊猫:将列转换为timedelta64

时间:2020-04-23 11:35:44

标签: python pandas timedelta

我尝试将CS​​V文件读取为熊猫数据框。在列名旁边,我得到了预期的dtype。我的方法是:

  1. 读取具有推断列类型的CSV(因为我希望能够 捕捉问题)
  2. 读取预期的列类型
  3. 遍历各列,并尝试使用'astype'
  4. 进行转换

现在,我有十亿分之一秒的时间增量。它们以float64的形式读取,并且可能包含缺少的值。 'astype'失败,并显示以下消息:

ValueError: Cannot convert non-finite values (NA or inf) to integer

这个小脚本可以重现我的问题。方法'to_timedelta'对我的数据有效,而转换导致错误。

import pandas as pd
import numpy as np

timedeltas  = [200800700,30020010030,np.NaN]
data = {'timedelta': timedeltas}

pd.to_timedelta(timedeltas)

df = pd.DataFrame(data)

df.dtypes

df['timedelta'].astype('timedelta64[ns]')

有人可以帮助解决此问题吗?除了'astype'之外,还有纳秒以外的其他保存表示形式吗?

1 个答案:

答案 0 :(得分:0)

感谢MrFuppes

无法使用astype(),但是to_timedelta可以使用。谢谢!

df['timedelta'] = pd.to_timedelta(df['timedelta'])