Панды read_csv получают неправильные числа при выводе dype - PullRequest
1 голос
/ 20 мая 2019

read_csv в pandas читает столбец чисел с пропущенными значениями как Float64 по умолчанию и ошибочно принимает числа.Я хотел бы понять, почему read_csv выбирает тип данных, который не подходит, и если есть способ обойти это, кроме ручного указания типов данных, которые я хочу.

CSV-файл, который я пытаюсь импортировать, выглядитнапример:

var1,var2
20190121080540088085780399,
20190121081907086084200299,-3510076284811963185
20190121082131086094750399,
20190121082828088034200299,
20190121083251091014220199,-8914359668388912530

и var2 - это столбцы, которые read_csv не читает правильно

Я импортирую файл с read_csv без указания dtype = себя:

import pandas as pd
df = pd.read_csv("/Outputs/test.csv").fillna(0) # read the file
df["var3"]=df["var2"].astype("int64")  # var3 displays the var2 as Int
df

он возвращает неправильные значения для var2:

                         var1          var2                 var3
0  20190121080540088085780399  0.000000e+00                    0
1  20190121081907086084200299 -3.510076e+18 -3510076284811963392
2  20190121082131086094750399  0.000000e+00                    0
3  20190121082828088034200299  0.000000e+00                    0
4  20190121083251091014220199 -8.914360e+18 -8914359668388912128

var2 не имеет правильных значений (например, -3510076284811963392 вместо -3510076284811963185).Я подозреваю, что это потому, что float64 недостаточно для этих больших чисел.

df.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 3 columns):
var1    5 non-null object
var2    5 non-null float64
var3    5 non-null int64
dtypes: float64(1), int64(1), object(1)
memory usage: 192.0+ bytes

==> Почему read_csv не выбирает подходящий тип данных для var?Например, var1, dtype это объект, который в порядке.Есть ли способ заставить to_csv читать большие числа как объект вместо float64?Я могу указать dtype сам ... но я бы хотел избежать этого, если бы я мог, как я хотел бы написать функцию, которую я могу использовать повторно, даже если имена столбцов изменятся.

...