Pandas to_records()在numpy。
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:无效的int()以10为基数:'myID'
我在做什么与pandas to_records()?
好的,所以从我的理解,你写你的变量myDtype
的方式与你的数据框架的列名不兼容。
您当前的数据框列是0和1的整型值,导致您的错误(试图将整型0
与您的命名"myID"
匹配)。(我不完全确定这个问题,所以可能有人想要补充,我将编辑答案。)
我能够通过使用字典引用column_dtypes来消除错误:
data = [("myID", 5), ("myID", 10)]
myDtype = numpy.dtype([('myID', numpy.str_, 4),
('length', numpy.uint16)])
df = pd.DataFrame(data, columns=["myID", "length"])
df_records = df.to_records(index=False, column_dtypes={"myID": "<U4", "length": "<u2"})
,结果如下:
rec.array([('myID', 5), ('myID', 10)],
dtype=[('myID', '<U4'), ('length', '<u2')])
dataframe
的to_records()
函数中的column_dtypes
参数期望dict
数据类型作为其输入。但是您正在传递myDtype
作为numpy.dtype
类型的参数。
试试这个,它应该可以工作-
df = pd.DataFrame(data, columns=["myID", "length"])
df_rec = df.to_records(index = False, column_dtypes = {"myID": "<U4", "length": "<u2"})
输出为-
>>> df_rec
rec.array([('myID', 5), ('myID', 10)],
dtype=[('myID', '<U4'), ('length', '<u2')])