2013-06-07 38 views
20

Tôi có một khung dữ liệu với các phím alpha-số mà tôi muốn lưu dưới dạng csv và đọc lại sau. Vì nhiều lý do tôi cần đọc một cách rõ ràng cột khóa này dưới dạng định dạng chuỗi, tôi có các khóa hoàn toàn số hoặc thậm chí tệ hơn, những thứ như: 1234E5 mà Pandas giải thích là phao. Điều này rõ ràng làm cho chìa khóa hoàn toàn vô dụng.Pandas đọc csv dưới dạng chuỗi

Vấn đề là khi tôi chỉ định chuỗi ký tự cho khung dữ liệu hoặc bất kỳ cột nào của nó, tôi chỉ lấy lại rác. Tôi có một số mã ví dụ ở đây:

df = pd.DataFrame(np.random.rand(2,2), 
        index=['1A', '1B'], 
        columns=['A', 'B']) 
df.to_csv(savefile) 

Khung dữ liệu trông giống như:

  A   B 
1A 0.209059 0.275554 
1B 0.742666 0.721165 

Sau đó, tôi đọc nó như vậy:

df_read = pd.read_csv(savefile, dtype=str, index_col=0) 

và kết quả là:

A B 
B ( < 

Đây có phải là vấn đề với tính toán của tôi không r, hoặc một cái gì đó tôi đang làm sai ở đây, hoặc chỉ là một lỗi?

Trả lời

25

Cập nhật: đây có been fixed: từ 0.11.1 bạn đi qua str/np.str sẽ tương đương với việc sử dụng object.

Sử dụng các đối tượng dtype:

In [11]: pd.read_csv('a', dtype=object, index_col=0) 
Out[11]: 
         A      B 
1A 0.35633069074776547  0.745585398803751 
1B 0.20037376323337375 0.013921830784260236 

hoặc tốt hơn chưa, chỉ cần không chỉ định một dtype:

In [12]: pd.read_csv('a', index_col=0) 
Out[12]: 
      A   B 
1A 0.356331 0.745585 
1B 0.200374 0.013922 

Tốt nhất là nên tránh những dtype str, xem ví dụ here.

+0

Tôi nghĩ rằng '' read_csv'' nên a) tăng trên dtype đã chuyển không hợp lệ và b) chỉ dịch '' str'' dtype thành '' object'', mở một sự cố? – Jeff

+0

https://github.com/pydata/pandas/issues/3795 –

+0

Cảm ơn bạn, tôi sẽ thử điều đó. Tôi đã đề cập đến tôi không thể chỉ đọc nó mà không xác định một loại, Pandas tiếp tục lấy các phím số mà tôi cần phải là chuỗi và phân tích chúng như là phao. Giống như tôi đã nói trong ví dụ một chìa khóa như: 1234E5 được lấy là: 1234.0x10^5, điều này không giúp tôi chút nào khi tôi đi tìm nó. – daver

Các vấn đề liên quan