无法将以下文本文件解析为pandas数据帧?

时间:2016-10-01 02:37:39

标签: python csv pandas awk dataframe

我有以下格式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            

我想立即将其加载到带有

的Pandas DataFrame中
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步骤并尝试在熊猫中完全执行此操作吗?

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分: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