我有一个制表符分隔的文件,其中有一列应该被解释为字符串,但许多条目都是整数。对于小文件,read_csv 在看到一些非整数值后正确地将列解释为字符串,但对于较大的文件,这不起作用:
import pandas as pd
df = pd.DataFrame({'a':['1']*100000 + ['X']*100000 + ['1']*100000, 'b':['b']*300000})
df.to_csv('test', sep='\t', index=False, na_rep='NA')
df2 = pd.read_csv('test', sep='\t')
print df2['a'].unique()
for a in df2['a'][262140:262150]:
print repr(a)
输出:
['1' 'X' 1]
'1'
'1'
'1'
'1'
1
1
1
1
1
1
有趣的是 262144 是 2 的幂,所以我认为推理和转换是分块进行的,但会跳过一些块。
我相当肯定这是一个错误,但想要一个可能使用引用的解决方法,尽管添加 quoting=csv.QUOTE_NONNUMERIC 进行读取和写入并不能解决问题。理想情况下,我可以通过引用我的字符串数据来解决这个问题,并以某种方式强制 pandas 不对引用的数据进行任何推断。
使用熊猫 0.12.0