2014-04-22 36 views
18

Dưới đây là một ví dụ về những gì tôi đang cố gắng để có được:Chuyển đổi Pandas dataframe để csv chuỗi

tôi có:

import pandas as pd 
df = pd.DataFrame({'A' : [0, 1], 'B' : [1, 6]}) 

Mục tiêu của tôi là:

',A,B\n0,0,1\n1,1,6\n' 

tôi có thể đạt được điều này với lười biếng và khủng khiếp:

df.to_csv('temp.csv') # create unnecessary file 
body = open('temp.csv').read() 

Ngoài ra to_string() phương pháp trông rất hứa hẹn; tuy nhiên, điều tốt nhất tôi có thể đưa ra là:

body = df.to_string()[1:].replace(' ', ',') + '\n' 

Điều này không tạo ra tệp không cần thiết, nhưng có vẻ cẩu thả và có lẽ không đáng tin cậy lắm.

Tôi có thiếu giải pháp đơn giản hơn không?

Trả lời

23
In [10]: df = pd.DataFrame({'A' : [0, 1], 'B' : [1, 6]}) 

In [11]: import StringIO 

In [12]: s = StringIO.StringIO() 

In [13]: df.to_csv(s) 

In [14]: s.getvalue() 
Out[14]: ',A,B\n0,0,1\n1,1,6\n' 
+3

-1 vì nó là một quá mức cần thiết (có thể nó xuất thân từ một phiên bản trước của gấu trúc) . Nhưng mới nhất nếu không có 'path_or_buf' được cung cấp thì kết quả được trả về dưới dạng một chuỗi. Xem câu trả lời dưới đây. –

+1

tất nhiên đây là từ 0.14 iirc – Jeff

33

Cách đơn giản nhất là chỉ để không nhập bất kỳ tên tập tin, trong trường hợp này một chuỗi được trả về:

>>> df = pd.DataFrame({'A' : [0, 1], 'B' : [1, 6]}) 
>>> df.to_csv() 
',A,B\n0,0,1\n1,1,6\n' 
+3

Nếu bạn đang sử dụng một chuỗi, bạn cần phải bọc nó trong một hàm tạo dataframe: 'pandas.DataFrame (chuỗi) .to_csv()'. –

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