2015-03-24 125 views
3

我想將pandas.DataFrame存儲到使用空白字符對齊列的文本文件中。如果這是我的樣本數據框:如何使用對齊空間chacarcters將python pandas.DataFrame寫入文件?

In [1]: import numpy as np 
In [2]: import pandas as pd 
In [3]: df = pd.DataFrame(np.linspace(0,1,9).reshape(3,3)) 
In [4]: df 
Out[4]: 
     0  1  2 
0 0.000 0.125 0.250 
1 0.375 0.500 0.625 
2 0.750 0.875 1.000 
[3 rows x 3 columns] 

我想要做這樣的事情:

In [5]: df.to_csv('test.txt', sep='?') 

得到這個:

In [6]: more test.txt 
    0  1  2 
0 0.0 0.125 0.25 
1 0.375 0.5 0.625 
2 0.75 0.875 1.0 

我應該使用什麼樣的分離?我想知道是否有辦法做到這一點,而不使用\t字符。它看起來不錯

0  1  2 
0 0.0  0.125 0.25 
1 0.375 0.5  0.625 
2 0.75 0.875 1.0 

但我的文本文件有製表符其他問題。

如果我使用sep=' '我得到這顯然是錯誤的。

0 1 2 
0 0.0 0.125 0.25 
1 0.375 0.5 0.625 
2 0.75 0.875 1.0 

我知道大熊貓可以讀取這樣的文件,所以我認爲有一種方法可以寫出這樣的文件。

+2

您可以使用'df.to_string(justify ='left')'並將其輸出寫入文件? – joris 2015-03-24 23:28:09

回答

1

這個怎麼樣

import numpy as np 
import pandas as pd 
import csv 

df = pd.DataFrame(np.linspace(0,1,9).reshape(3,3)) 
df.to_csv('test.txt', 
      float_format='%10.3f', sep=" ", 
      quoting=csv.QUOTE_NONE, escapechar=" ") 

它產生:

0 1 2 
0   0.000   0.125   0.250 
1   0.375   0.500   0.625 
2   0.750   0.875   1.000 

的空間數量可以通過的 '最長' 號的位數來OFC定製。

+0

這很好,但我看到兩個問題。它沒有將列標籤與列對齊(也許這可以通過使列標籤浮動來克服)。另外如果不同的列有不同數量的有效數字,處理起來會很複雜。 – 2015-03-25 15:41:38