2016-10-01 47 views
2

我在此格式下的文本文件file1.txt(顯示它究竟是因爲我看到它):無法解析以下文本文件轉換成數據幀大熊貓?

3612 11.4 21.5 1.3 cat3  10469 11447 9239174 - Smith  David  
    484 25.1 13.2 0.0 cat3  11505 11675 9238946 - John  Mary   
    239 29.4 1.9 1.0 cat3  11678 11780 9238841 + Weiz  Parker 
    318 23.0 3.7 0.0 cat3  15265 15355 9235266 + Cohen  Charles 
    18 23.2 0.0 2.0 cat3  15798 15849 9234772 + Lopez  Beth   
    463 1.3 0.6 1.7 cat3  10001 10468 9240153 + Brown  Charlie    

我想馬上此加載到一個熊貓數據幀與

import pandas as pd 
df = pd.DataFrame("file1.txt") 

但是這給我只有一列的數據幀。

所以,我想這個文件解析與Python中的.csv。問題是這不是一個「常量」分隔符,即它不是一個選項卡。

import csv 
input_text = csv.reader(open("file1.txt", "r"), delimiter = "\t") 
output_csv = csv.writer(open("file1.csv", 'w')) 
output_csv.writerows(input_text) # this should write a csv "file1.csv" 

但是,這給出了相同的結果。分隔符delimiter = ""也不起作用。

如何解析此文本文件爲csv格式?我可以用Python來做到這一點嗎? (或者我需要awk嗎?)我應該「跳過」中介csv步驟,並嘗試完全在熊貓中完成此操作嗎?

任何幫助表示讚賞!

+0

使用'pd.read_csv()'。 – HYRY

+0

@HYRY似乎不起作用---導致只有一列的數據框 – ShanZhengYang

回答

2

使用帶分隔符的pd.read_csv()並指定列名稱並指定csv文件中未包含任何列標題。

In [24]: pd.read_csv("file1.txt", header=None, names=[chr(i) for i in range(65, 75)], sep="\s+") 
Out[24]: 
     A  B C  D  E  F  G H  I  J 
3612 11.4 21.5 1.3 cat3 10469 11447 9239174 - Smith David 
484 25.1 13.2 0.0 cat3 11505 11675 9238946 - John  Mary 
239 29.4 1.9 1.0 cat3 11678 11780 9238841 + Weiz Parker 
318 23.0 3.7 0.0 cat3 15265 15355 9235266 + Cohen Charles 
18 23.2 0.0 2.0 cat3 15798 15849 9234772 + Lopez  Beth 
463 1.3 0.6 1.7 cat3 10001 10468 9240153 + Brown Charlie