Я пытаюсь преобразовать некоторые столбцы в DataFrame из числа с плавающей точкой в ​​целые числа - PullRequest
0 голосов
/ 19 мая 2019

Я использую .astype, но все, что я не могу найти в документации, - это преобразование всего df, а не нескольких столбцов.Любой совет?

Дата: 2019-05-13 объем: 3.464018e + 08 волатильность: 3.507323e + 09

Когда я пытаюсь выполнить вычисления np для этих чисел, я получаю ошибку, говоря, что число конечно небесконечна.Так что я думаю, может быть, он не распознает e + 0 в конце, который изменится, если преобразуется в целые.

Заранее спасибо!

1 Ответ

0 голосов
/ 19 мая 2019

Одним из возможных решений является astype метод.

В качестве параметра можно передать словарь «columnName: type» чтобы указать тип цели для каждого столбца:

df.astype({'volume': np.int64, 'volatility': np.int64})

В качестве тестовых данных я использовал:

data = [['2019-05-13', 3.464018e+08, 3.507323e+09],
        ['2019-05-14', 3.2024e+08,   3.730523e+09],
        ['2019-05-15', 3.36706e+08,  3.3246783e+09]]
df = pd.DataFrame(data,columns=['Date','volume', 'volatility'])

Результат конвертации был:

         Date     volume  volatility
0  2019-05-13  346401800  3507323000
1  2019-05-14  320240000  3730523000
2  2019-05-15  336706000  3324678300

Обратите внимание, что только int недостаточно (или, по крайней мере, может быть). Причина в том, что в этом случае размер номера зависит от платформы . На моем компьютере это было int32, например, значения в столбце волатильность были преобразовано в -2147483648 (из-за переполнения).

Конечно, для явного использования Numpy типов данных, как я, Вы должны импортировать numpy как np .

Другой способ - определить целевые типы как string , в данном случае просто 'int64'.

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