簡體   English   中英

帶有更多分隔符的 Pandas 數據框 to_csv

[英]Pandas Data Frame to_csv with more separator

我有一個 40 列和 600 000 行的文件。 在pandas數據幀中處理后,我想將數據幀保存到具有不同間距長度的csv。 df.to_csv 中有一個 sep kwarg,我嘗試使用正則表達式,但出現錯誤

類型錯誤:“分隔符”必須是 1 個字符的字符串。

我想要不同列間距的輸出,如下圖

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

更新

在使用 pandas.to_csv 時,空格中包含制表符分隔 ('\\t')。 代表 pandas.to_csv 我使用下面的代碼保存為 txt。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM