2016-04-27 21 views
1

我有一個pandas.DataFrame與2列。第一列是一個簡單的整數,第二列是長度爲50的numpy.array。我想將這兩列寫入CSV文件,但是當我使用.to_csv()並在Excel中打開文件時,僅顯示一部分值,都可以訪問。當我在Excel中打開它時,長度是可變的,並且我似乎正在獲取相同字符串長度的列(或多或少)。 pandas.to_csv()是否將某種視覺解釋寫入文件,而不是DataFrame中的實際數據?使用pandas.to_csv(df)只顯示numpy.array的一個子集在Excel中

如何正確寫入CSV以便我可以在Excel中使用它?

+1

我認爲這是對Excel的部分的顯示問題。你能用文本編輯器檢查文件嗎? – ayhan

+0

Argl ... @han你是對的!我最好刪除這個問題嗎?或者重述它? – Moppentapper

+0

如果您認爲這個問題對未來的其他人有幫助,我認爲您不需要刪除它。如果你認爲它會更有幫助,你也可以重新修改它。隨你便。 :) – ayhan

回答

1

看起來第二列的50值在每行Excel的一個單元格中。

我想你可以通過applySeries然後concat第一列anumpy array列新列創建。最後寫to_csv

import pandas as pd 
import numpy as np 

df = pd.DataFrame({'a': [0,1,5], 'b': [np.arange(50), np.arange(50), np.arange(50)]}) 
print df 
    a             b 
0 0 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 
1 1 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,... 
2 5 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,...  

print df.b.apply(pd.Series) 
    0 1 2 3 4 5 6 7 8 9 ... 40 41 42 43 44 45 46 47 \ 
0 0 1 2 3 4 5 6 7 8 9 ... 40 41 42 43 44 45 46 47 
1 0 1 2 3 4 5 6 7 8 9 ... 40 41 42 43 44 45 46 47 
2 0 1 2 3 4 5 6 7 8 9 ... 40 41 42 43 44 45 46 47 

    48 49 
0 48 49 
1 48 49 
2 48 49 

df = pd.concat([df['a'], df.b.apply(pd.Series)], axis=1) 
print df 
[3 rows x 50 columns] 
    a 0 1 2 3 4 5 6 7 8 ... 40 41 42 43 44 45 46 47 48 49 
0 0 0 1 2 3 4 5 6 7 8 ... 40 41 42 43 44 45 46 47 48 49 
1 1 0 1 2 3 4 5 6 7 8 ... 40 41 42 43 44 45 46 47 48 49 
2 5 0 1 2 3 4 5 6 7 8 ... 40 41 42 43 44 45 46 47 48 49 
#for testing 
print df.to_csv() 
#write to file 
#print df.to_csv('filename') 

,a,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49 
0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49 
1,1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49 
2,5,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49 

編輯:

如果你需要寫DataFrameto_excel

#write to excel, omit index of DataFrame 
df.to_excel('test.xlsx', index=False) 
+0

謝謝你的工作!但正如@hanhan所說,這實際上更像是一個優秀的問題。對我來說,重新措辭還是簡單地刪除問題更好? – Moppentapper

+0

我想你可以改述一下問題。 – jezrael

+0

好的,你需要寫'DataFrame'來優化?因爲您可以創建csv(.csv)或創建excel文件(.xlxs)。 – jezrael

相關問題