一些浮点值不会在pandas Dataframe中转换为int

时间:2018-05-14 09:52:51

标签: python pandas dataframe

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 :(得分:2)

问题在于选择:

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

答案 1 :(得分:1)

尝试使用numpys int64

<强>实施例

import numpy as np
df['movieId']=df['movieId'].astype(np.int64)