Pandas to_records()抛出一个错误,而numpy.array的行为符合预期。
data = [('myID', 5), ('myID', 10)]
myDtype = numpy.dtype([('myID', numpy.str_,4),
('length', numpy.uint16)])
工作中:
arr = numpy.array(data, dtype=myDtype)
output: [('myID', 5) ('myID', 10)]
这是行不通的
df = pd.DataFrame(data)
df = df.to_records(index=False, column_dtypes=myDtype)
ValueError:基数为10的int()的文字无效:'我ID'
我在干什么?我在干什么?
2条答案
按热度按时间xqkwcwgp1#
据我所知,您编写变量
myDtype
的方式与 Dataframe 中的列名不兼容。您当前的dataframe列是int值0和1,导致您的错误(尝试将int
0
与您的命名"myID"
匹配)。(* 不完全确定这个问题,因此可能有人想补充,我将编辑答案。*)我可以通过使用字典引用column_dtypes来删除该错误:
结果如下:
ymdaylpp2#
pandas
dataframe
的to_records()
函数中的column_dtypes
参数需要dict
数据类型作为其输入。但您传递的myDtype
作为参数,其类型为numpy.dtype
。试试这个,应该有用-
输出为-