首页 > 解决方案 > 数据框列不会从整数字符串转换为实际整数

问题描述

我有一个微秒分辨率的日期字符串。我需要它作为一个整数。

import pandas as pd
data = ["20181231235959383171", "20181231235959383172"]
df = pd.DataFrame(data=data, columns=["A"])
df["A"].astype(np.int)

错误:

File "pandas\_libs\lib.pyx", line 545, in pandas._libs.lib.astype_intsafe
OverflowError: Python int too large to convert to C long

如果我尝试将其转换为标准 Python,也会出现同样的问题int

标签: pandasnumpy

解决方案


根据在上一个问题中的回答:

import pandas as pd
data = ["20181231235959383171", "20181231235959383172"]
df = pd.DataFrame(data=data, columns=["A"])

# slow but big enough
df["A_as_python_int"] = df["A"].apply(int)

# fast but has to be split to two integers
df["A_seconds"] = (df["A_as_python_int"] // 1000000).astype(np.int)
df["A_fractions"] = (df["A_as_python_int"] % 1000000).astype(np.int)

推荐阅读