2017-08-31 86 views
0

我有一個40列和600 000行的文件。在熊貓數據框中處理後,我想用不同的間隔長度將數據幀保存爲csv。有一個在df.to_csv一個九月kwarg,我試着用正則表達式,但我發現了錯誤熊貓數據框to_csv與更多的分隔符

TypeError: "delimiter" must be an 1-character string.

我想用不同的欄間距輸出,如下圖所示

A B C D E F G 
1 3 5 8 8 9 8 
1 3 5 8 8 9 8 
1 3 5 8 8 9 8 
1 3 5 8 8 9 8 
1 3 5 8 8 9 8 

使用以下代碼我得到製表符分隔。這些都是相同的間距。

df.to_csv("D:\\test.txt", sep = "\t", encoding='utf-8') 

A B C D E F G 
1 3 5 8 8 9 8 
1 3 5 8 8 9 8 
1 3 5 8 8 9 8 
1 3 5 8 8 9 8 
1 3 5 8 8 9 8 

我不想做循環,600k行可能需要很多時間。

+1

如何加盟列一列的字符串,然後保存就在一列? – Yorian

+1

考慮將所有列保存爲字符串並填充空格。 – Parfait

回答

0

謝謝你的意見,它幫助了我。 以下是代碼。

import pandas as pd 

#Create DataFrame 
df = pd.DataFrame({'A':[0,1,2,3],'B':[0,11,2,333],'C':[0,1,22,3],'D':[00,1,2,33]}) 

#Convert the Columns to string 
df[df.columns]=df[df.columns].astype(str) 

#Create the list of column separator width 
SepWidth = [5,6,3,8] 

#Temp dict 
tempdf = {} 
#Convert all the column to series 
for i, eCol in enumerate(df): 
    tempdf[i] = pd.Series(df[eCol]).str.pad(width=SepWidth[i]) 

#Final DataFrame 
Fdf = pd.concat(tempdf, axis=1) 
#print Fdf 
#Export to csv 
Fdf.to_csv("D:\\test.txt", sep='\t', index=False, header=False, encoding='utf-8') 

的test.txt

0  0 0  0 
1  11 1  1 
2  2 22  2 
3  333 3  33 

UPDATE

製表符分隔( '\ T')的輸出被列入間距,同時使用pandas.to_csv。代表pandas.to_csv我使用下面的代碼保存爲txt。

numpy.savttxt(file, df.values, fmt='%s')