熊猫数据框to_csv与更多的分隔符
问题描述:
我有一个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行可能需要很多时间。
答
谢谢你的意见,它帮助了我。 以下是代码。
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')
如何加盟列一列的字符串,然后保存就在一列? – Yorian
考虑将所有列保存为字符串并填充空格。 – Parfait