2015-08-24 50 views
-4

我打開一個使用熊貓的txt文件,在文件中應該有一個列中斷,而不是\t在txt文件中代表什麼?

我讀的文件中是這樣的:

df=pd.read_csv(r'file.txt') 

數據框看起來是這樣的:

1   Band 1\t 0.428944\t0.843916\t0.689923\t0      
2   Band 2\t-0.000000\t0.689320\t0.513170\t0     
3   Band 3\t 0.336438\t0.743478\t0.592622\t0      
4   Band 4\t 0.313259\t0.678561\t0.525667\t0      
5   Band 5\t 0.374522\t0.746828\t0.583513\t0 

,我希望它看起來像這樣:

1   Band 1 0.428944 0.843916 0.689923      
2   Band 2 -0.000000 0.689320 0.513170     
3   Band 3 0.336438 0.743478 0.592622      
4   Band 4 0.313259 0.678561 0.525667      
5   Band 5 0.374522 0.746828 0.583513 

我在python中使用txt文件是新的,我可能需要設置某種分隔符嗎?

使用print(repr(open(r'D:\Sheyenne\Statistics\NDVI_allotment\Text\A_Annex2.txt').read(42)))回報:

'\n\n  Band 1\t 0.428944\t0.843916\t0.689923\t 

編輯:

我張貼簡化原來dataframes和現實中有更多的數據列。

`print(repr(open(r'D:\Sheyenne\Statistics\NDVI_allotment\Text\A_Annex2.csv').read(500))) 

回報:

'\nBasic Stats\t  Min\t  Max\t Mean\t Stdev\t Num\tEigenvalue\n  Band 1\t 0.428944\t0.843916\t0.689923\t0.052534\t 1\t 0.229509\n  Band 2\t-0.000000\t0.689320\t0.513170\t0.048885\t 2\t 0.119217\n  Band 3\t 0.336438\t0.743478\t0.592622\t0.052544\t 3\t 0.059111\n  Band 4\t 0.313259\t0.678561\t0.525667\t0.048047\t 4\t 0.051338\n  Band 5\t 0.374522\t0.746828\t0.583513\t0.055989\t 5\t 0.027913\n  Band 6\t-0.000000\t0.749325\t0.330068\t0.314351\t 6\t 0.022561\n  Band 7\t-0.000000\t0.819288\t0.6001' 
+0

你能告訴我們一個文件的樣本嗎? 'print(repr(open('file.txt')。read(100)))'在這裏會有所幫助。 –

+1

我GOOGLE了你的問題的標題,並提出了一些有用的結果,如[這一個](http://stackoverflow.com/questions/2585337/how-to-use-tab-space-while-writing-in-text (Java,但仍然相關)。 – TigerhawkT3

+0

@Martijn彼得斯,我很抱歉,但你是什麼意思的樣本?我展示的第一部分代碼是它的一個樣本,你的意思是不同的? –

回答

8

這是一個製表符。這意味着您的pandas.read_csv()調用未能自動確定文件中的正確分隔符。

你可以嘗試用sep參數明確指定:

df = pd.read_csv(r'file.txt', sep='\t') 

,或者你可以在delim_whitespace參數設置爲true一般空格作爲分隔符支持:

df = pd.read_csv(r'file.txt', delim_whitespace=True) 

從你樣本看起來像你有多餘的空行,以及分隔符後面的空格,所以也許你需要讓讀者跳過這些:

df = pd.read_csv(r'file.txt', sep='\t', 
       skipinitialspace=True, skip_blank_lines=True) 

查看documentation on handling CSV files

+0

請注意'delim_whitespace = True'可能會導致OP的數據(「Band 1」中的空間)出現問題。 – DSM

+0

@DSM:是的,除非'read_csv'可以像Python'csv'模塊可以*和*那樣處理引用,那麼第一列使用引號(可能不是這種情況,因爲'\ t'包含在該列中)。 –

+0

@DSM:無論如何,沒有這個文件的樣本,我們都只是在這裏猜測。我要求一個。 –

1

\t<tab>字符的轉義序列。

+0

我想回答這個問題:「在txt文件中代表什麼?」今天值得投票。 –

+1

或者也許只有1 upvote。 (但只有一個)Ps。我看到加入維基百科鏈接是值得10xp :) – Reg

+1

必須*星期一*! –