将 pandas 系列的 dtype <- 'datetime64' 转换为 dtype <- 'np.int' 而无需迭代

Posted

技术标签:

【中文标题】将 pandas 系列的 dtype <- \'datetime64\' 转换为 dtype <- \'np.int\' 而无需迭代【英文标题】:convert pandas Series of dtype <- 'datetime64' into dtype <- 'np.int' without iterating将 pandas 系列的 dtype <- 'datetime64' 转换为 dtype <- 'np.int' 而无需迭代 【发布时间】:2020-11-25 17:22:45 【问题描述】:

考虑以下示例pandas DataFrame

df = pd.DataFrame('date':[pd.to_datetime('2016-08-11 14:09:57.00'),pd.to_datetime('2016-08-11 15:09:57.00'),pd.to_datetime('2016-08-11 16:09:57.8700')])

我可以将单个实例转换为np.int64 类型

print(df.date[0].value)
1470924597000000000

或将整个列 iteratively 转换为

df.date.apply(lambda x: x.value)

我如何不使用 iteration 实现这一目标?像

df.date.value

我还想在不使用迭代的情况下将np.int64 对象转换回pd.Timestamp 对象。我从 here 和 here 发布的解决方案中获得了一些见解,但这并不能解决我的问题。

【问题讨论】:

df['date'].astype('int64') ? 你检查过这个解决方案了吗:***.com/questions/16852911/… @anky/@Jorge 我整个下午都在努力解决这个问题!!。这解决了我的问题。非常感谢。 这能回答你的问题吗? pandas convert from datetime to integer timestamp 【参考方案1】:

根据上面的@anky cmets,解决方案很简单。

df.date.astype('int64') >> to int64 dtype
pd.to_datetime(df.date) >> from int dtype to datetime64 dtype

【讨论】:

以上是关于将 pandas 系列的 dtype <- 'datetime64' 转换为 dtype <- 'np.int' 而无需迭代的主要内容,如果未能解决你的问题,请参考以下文章

如何从 dtype 为列表的 Pandas 系列中删除 NaN?

将包含 NaN 的 Pandas 列转换为 dtype `int`

如何创建字符串类型的 Pandas 系列?

从数据框或系列的熊猫输出中删除名称、dtype

将 pandas.Series 从 dtype 对象转换为浮点数,将错误转换为 nans

无法将 pandas.Series 转换为 dtype=np.float64 的 numpy.array