2017-08-31 13 views
0

私は40列と600000行のファイルを持っています。私はパンダのデータフレームでそれを処理した後、データフレームを異なる間隔の長さのcsvに保存したいと思います。 df.to_csvでの9月のkwargがあり、私は正規表現を試みたが、以下を使用してパンダデータフレームto_csvに区切り記号を追加

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 

以下のように私は、私は別の列間隔で出力をするエラー

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

を取得していますコードをタブ区切りにしています。それらはすべて同じ間隔である。

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

コメントありがとうございました。 以下はそのコードです。 pandas.to_csvを使用しながら区切らあるtest.txtの

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') 

出力

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

UPDATE

タブ( '\ tが')、間隔に含まれていました。 pandas.to_csvの代わりに私はtxtとして保存するために以下のコードを使用しています。単一列の文字列に列を参加して、ただ1列の保存について

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

関連する問題