Начнем с того, что вы предполагаете, что длина целых чисел верна.
Давайте проведем несколько экспериментов с данными, чтобы доказать это.
Эксперимент 1
Давайте посмотрим, какое наибольшее целое число может обработать Панда:
df = pd.DataFrame({"a":[9223372036854775899]})
df.to_csv("try.csv", index=False)
df1 = pd.read_csv("try.csv", dtype={"a":int})
df1
a
0 9223372036854775899
df = pd.DataFrame({"a":[92233720368547758100]})
df.to_csv("try.csv", index=False)
df2 = pd.read_csv("try.csv", dtype={"a":int})
df2
---------------------------------------------------------------------------
OverflowError Traceback (most recent call last)
pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._convert_with_dtype()
pandas/_libs/parsers.pyx in pandas._libs.parsers._try_int64()
OverflowError: Overflow
Итак, вопрос в том, как нам правильно указать формат чисел
Эксперимент 2
df = pd.DataFrame({"a":[98444375131798787989138668, 98444375131798787989138669]})
df.to_csv("try.csv", index=False)
df3 = pd.read_csv("try.csv", dtype={"a":float})
df3.a.nunique()
1
Мы видим, что float
ест числа
Эксперимент 3
Давайте попробуем object
формат
df = pd.DataFrame({"a":[98444375131798787989138668, 98444375131798787989138669]})
df.to_csv("try.csv", index=False)
df4 = pd.read_csv("try.csv", dtype={"a":object})
df4.a.nunique()
2
Короче говоря, ответ на ваш вопрос - указать тип данных при чтении как object
:
df = pd.read_csv("result.csv", dtype={"fullVisitorId":object})