2016-11-04 34 views
-2

我正在將數據幀中的項目輸出到csv。但是,這些行太長了。我需要讓csv add line每隔X個項目(列)打破(/n),以便輸出中的各行不會太長。有沒有辦法做到這一點?大熊貓to_CSV給定長度的折線

A,B,C,D,E,F,G,H,I,J,K 

成爲文件(X = 3) -

A,B,C 
D,E,F 
G,H,I 
J,K 

編輯: 我有一個95%的溶液(假設你只有1列):

size=50 
indexes = np.arange(0,len(data),size) #have to use numpy since range is now an immutable type in python 3 
indexes = np.append(indexes,[len(data)]) #add the uneven final index 
i=0 
while i < len(indexes)-1: 
    holder = pd.DataFrame(data.iloc[indexes[i]:indexes[i+1]]).T 
    holder.to_csv(filename, index=False, header=False) 
    i += 1 

的唯一不可思議的是,儘管沒有拋出任何錯誤,但儘管信息完全在holder中,但while(最終索引不均勻)的最後一個循環沒有寫入文件。由於沒有錯誤被拋出,我不知道爲什麼最終的信息沒有被寫入。

+1

在寫入CSV文件之前重新整形數據幀? – IanS

+2

這些行太長了? –

回答

1

假設你有一個數量的值是3的倍數(注意我如何加入L):

s = pd.Series(["A","B","C","D","E","F","G","H","I","J","K","L"]) 
df = pd.DataFrame(s.reshape((-1,3))) 

可他們寫df到CSV。

+0

我不一定會有完整的最後一行。我故意做出了不平衡的例子。 – Elliot

+0

最好你可以在最後加上'NaN'值,所以你最後一行看起來像'J,K'(最後一個值爲空)。 – IanS