2013-10-08 21 views
5

Tôi không thể tìm thấy tùy chọn để thiết lập dấu thập phân cho phao (".", Hoặc ",") khi VIẾT một DataFrame vào tệp csv. (Đọc là không có vấn đề.) Nhiệm vụ/vấn đề của tôi: Tôi đang xuất bản một chương trình/tập lệnh và muốn tất cả người dùng độc lập với cài đặt ngôn ngữ và hệ điều hành của họ sử dụng nó và đặc biệt tạo ra đầu ra csv với cài đặt dấu thập phân như được đưa ra trong " locale.localeconv() ["decimal_point"] ". Tùy chọn "float_format" không hoạt động đối với tôi. Tôi có cần phải chuyển đổi mọi phao sang một chuỗi và thay thế "." với ","? Nếu điều này được đăng ở một nơi khác, vui lòng tha lỗi và cung cấp cho tôi liên kết thích hợp.Python PANDAS ghi vào csv: cách đặt dấu thập phân ("." Hoặc ",")?

Cảm ơn bạn rất nhiều vì đã dành thời gian và công sức của bạn !!

+0

Đây là có liên quan. Tôi không thấy bất cứ điều gì đặc biệt hữu ích, nhưng tôi sẽ nhìn quanh đây: https://github.com/pydata/pandas/issues/4668 –

Trả lời

4

Không sẽ có hiệu quả, nhưng không được công việc (chỉ to_csv) sau)

In [29]: df = DataFrame(dict(A = [1.5,2.5], B = [2.5,3.0])) 

In [30]: df 
Out[30]: 
    A B 
0 1.5 2.5 
1 2.5 3.0 

In [31]: df.applymap(lambda x: str(x).replace('.',',')) 
Out[31]: 
    A B 
0 1,5 2,5 
1 2,5 3,0 

này cần được nhanh hơn một chút (cần ít nhất 0,12)

In [37]: df.applymap(str).replace(r'\.',',',regex=True) 
Out[37]: 
    A B 
0 1,5 2,5 
1 2,5 3,0 
+0

Cảm ơn bạn đã trả lời !! – tryptofame

+0

Câu trả lời đầu tiên (sử dụng hàm lambda) làm việc, câu thứ hai không ("TypeError: replace() có đối số từ khóa không mong muốn 'regex'" bằng Python 2.7.3). Nó đủ nhanh! – tryptofame

+0

bạn cần ít nhất 0,12 cho phiên bản thứ 2, IIRC – Jeff

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