我有一个包含3列的数据框,其中包含以下dtypes:
df.info()
tconst object
directors object
writers object
请查看数据本身:
现在,我必须将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')
这是怎么回事?
答案 0 :(得分:0)
我认为这里的问题是参数header=None
,该参数用于读取没有file
头的csv
。
解决方案是将其删除,因为文件中的第一行标头是DataFrame
的列名称:
df = pd.read_csv('title.crew.tsv',
sep='\t',
encoding= 'latin1')
另一个问题是列中的tt
和nm
前缀,因此不能转换为整数。
解决方案是:
df['tconst'] = df['tconst'].str[2:].astype(int)