Pandas to_records() dtype转换为char / unicode问题



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')])
熊猫dataframeto_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')])

最新更新