无法使用Numpy将对象转换为np.int64

时间:2019-03-02 06:09:56

标签: python-3.x pandas numpy dataframe

我有一个包含3列的数据框,其中包含以下dtypes:

df.info()
tconst       object
directors    object
writers      object

请查看数据本身:

enter image description here

现在,我必须将tconst列更改为dtype:int64。我尝试了这段代码,但抛出错误:

df = pd.read_csv('title.crew.tsv',
                   header=None,sep='\t', 
                   encoding= 'latin1',
                   names = ['tconst', 'directors','writers'], 
                   dtype={'tconst': np.int64,'directors':np.int64})

错误1:ValueError:以10为底的int()的文字无效:'tconst'
错误:TypeError:无法根据规则“安全”将数组从dtype('O')转换为dtype('int64')

这是怎么回事?

1 个答案:

答案 0 :(得分:0)

我认为这里的问题是参数header=None,该参数用于读取没有file头的csv

解决方案是将其删除,因为文件中的第一行标头是DataFrame的列名称:

df = pd.read_csv('title.crew.tsv',
                   sep='\t', 
                   encoding= 'latin1')

另一个问题是列中的ttnm前缀,因此不能转换为整数。

解决方案是:

df['tconst'] = df['tconst'].str[2:].astype(int)