Tôi có một tệp được phân tách bằng tab có cột nên được hiểu là chuỗi, nhưng nhiều mục nhập là số nguyên. Với các tập tin nhỏ read_csv giải thích một cách chính xác các cột như là một chuỗi sau khi nhìn thấy một số giá trị số nguyên không, nhưng với các tập tin lớn hơn, điều này không làm việc:pandas read_csv vấn đề suy luận dtype
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)
đầu ra:
['1' 'X' 1]
'1'
'1'
'1'
'1'
1
1
1
1
1
1
Điều thú vị là 262.144 là một sức mạnh của 2 vì vậy tôi nghĩ suy luận và chuyển đổi đang diễn ra theo từng phần nhưng bỏ qua một số đoạn.
Tôi khá chắc chắn đây là lỗi, nhưng muốn một công việc xung quanh có thể sử dụng trích dẫn, mặc dù thêm quoting = csv.QUOTE_NONNUMERIC để đọc và viết không khắc phục được sự cố. Lý tưởng nhất là tôi có thể giải quyết vấn đề này bằng cách trích dẫn dữ liệu chuỗi của tôi và bằng cách nào đó buộc gấu trúc không thực hiện bất kỳ suy luận nào về dữ liệu được trích dẫn.
Sử dụng gấu trúc 0.12.0
[tài liệu] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html) làm cho nó trông như thế này sẽ hoạt động: 'pd.read_csv (' test ', sep =' \ t ', bộ chuyển đổi = {' a ': str}) '. –
@StevenRumbalski và nó hoàn toàn không! Bạn nên thêm câu trả lời này làm câu trả lời! –
@AndyHayden: Cảm ơn - đã xong. –