下面的y列应该是['Reg','Reg','Swp','Swp']
In [1]: pd.read_csv('/tmp/test3.csv')
Out[1]:
x,y
^@^@^@,Reg
^@^@^@,Reg
I,Swp
I,Swp
In [2]: ! cat /tmp/test3.csv
x y
0
1 NaN NaN
2 I Swp
3 I Swp
In [3]: f = open('/tmp/test3.csv', 'rb'); print(repr(f.read()))
'x,y\n \x00\x00\x00,Reg\n \x00\x00\x00,Reg\nI,Swp\nI,Swp\n'
是的,我可以重现这个问题,但不知道如何用
pd.read_csv
来修复它。以下是解决方法:注意,使用
^{2}$names = True
时,csv的第一个有效行被解释为列名(因此不会影响后续行中值的数据类型)然后genfromtxt将为第三列分配一个数字数据类型(在本例中是
<i4
)。在但是,如果数字数据与诸如
'\x00'
之类的字节混合在一起,那么genfromtxt将无法将此列识别为数值,因此将求助于指定一个字符串数据类型。{5>不过,您可以手动分配dtype的列。例如将第一列
x
设置为数据类型|i4
(4字节整数),第二列y
具有数据类型|S3
(3字节字符串)。有关可用数据类型的详细信息,请参见this doc page。在相关问题 更多 >
编程相关推荐