Столбец Dataframe не будет преобразован из целочисленной строки в фактическое целое число - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть строка даты в микросекундном разрешении.Мне нужно это как целое число.

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

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

За мой ответ в вашем предыдущем вопросе:

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)
0 голосов
/ 26 сентября 2019

Вы можете сделать это:

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

before = df.A[0]
df.A = [int(x) for x in df.A.tolist()]
after = df.A[0]
before, after

Вывод :
Данные были преобразованы в целое число.Показано: (before, after)

('20181231235959383171', 20181231235959383171)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...