Python 3.x 无法使用Numpy将对象转换为np.int64
我有一个包含3列的数据框,数据类型如下:Python 3.x 无法使用Numpy将对象转换为np.int64,python-3.x,pandas,numpy,dataframe,Python 3.x,Pandas,Numpy,Dataframe,我有一个包含3列的数据框,数据类型如下: df.info() tconst object directors object writers object 请参见数据本身: 现在,我必须将列tconst更改为dtype:int64。我尝试了此代码,但它引发了一个错误: df = pd.read_csv('title.crew.tsv', header=None,sep='\t', enco
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”错误:类型错误:无法根据“安全”规则将数组从dtype('O')强制转换为dtype('int64')
这里出了什么问题?在我看来,这里的问题是参数
header=None
,用于读取没有csv
header的文件
解决方案是删除它,因为文件中是第一行标题,它转换为DataFrame
的列名:
df = pd.read_csv('title.crew.tsv',
sep='\t',
encoding= 'latin1')
另一个问题是列中的tt
和nm
前缀,因此无法转换为整数
解决办法是:
df['tconst'] = df['tconst'].str[2:].astype(int)
我们需要您的csv数据样本来帮助您。@Tomothy32抱歉,我刚刚添加了它。我在tsv显示中没有看到任何整数。所有数字前面都有字母“tt”和“nm”。它们是数据帧中的对象
,因为它们是作为字符串加载的。它们无法转换为整数,至少不能转换为当前形式。我只是删除了header=None并重新运行了它。然而,不幸的是,同样的错误。@Tini-数据是否保密?@Tini-是否可以共享它或添加下载链接?@Tini-在某些行中有多个值,用,
分隔,例如第8行中的Isnm0005690,nm0374658
。是否需要在数据中创建2行tt0000007 nm0374658\N
和tt0000007 nm0005690\N
?