【问题标题】:Cannot parse the following text file into a pandas dataframe?无法将以下文本文件解析为 pandas 数据框?
【发布时间】:2016-10-01 02:37:38
【问题描述】:

我有以下这种格式的文本文件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 步骤并尝试完全在 pandas 中执行此操作吗?

任何帮助表示赞赏!

【问题讨论】:

  • 使用pd.read_csv()
  • @HYRY 似乎不起作用---导致数据框只有一列

标签: python csv pandas awk dataframe


【解决方案1】:

使用带有分隔符的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

【讨论】:

    猜你喜欢
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    相关资源
    最近更新 更多