некоторые значения с плавающей запятой не преобразуются в int в пандах Dataframe - PullRequest
0 голосов
/ 14 мая 2018
df['movieId']=df['movieId'].astype('int')
df.loc[92]['movieId']

Выход df.loc[92]['movieId'] равен 134368,0. Но это должно быть 134368

Я проверил dtype

df.loc[92]['movieId'].dtype

и это дает dtype('float64'), но другие значения были преобразованы в int.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Проблема в выборе:

df.loc[92]['movieId']

Сначала выберите 92 индекс, который преобразует строку в Series с плавающей точкой, потому что некоторые другие float столбец (столбцы).

Правильный выбор: DataFrame.loc с индексом и значением столбца:

df.loc[92, 'movieId']

Пример

df = pd.DataFrame({'movieId':[1343680.0, 134369.0],
                   'col':[4,7.5]}, index=[92,95])
print (df)
    col    movieId
92  4.0  1343680.0
95  7.5   134369.0

df['movieId']=df['movieId'].astype('int')
print (df)
    col  movieId
92  4.0  1343680
95  7.5   134369

print (df.loc[92])
col              4.0
movieId    1343680.0
Name: 92, dtype: float64

print (df.loc[92]['movieId'])
1343680.0

print (df.loc[92, 'movieId'])
1343680
0 голосов
/ 14 мая 2018

Попробуйте использовать numpys int64

Ex:

import numpy as np
df['movieId']=df['movieId'].astype(np.int64)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...