首页 > 解决方案 > Pandas 中 .txt 文件中的单独列

问题描述

原始 .txt 文件如下所示

e1 47 3 Self-emp-inc Married-civ-spouse Transport-moving White Male Cuba                                                                                                                                                                                  
e2 52 16 Self-emp-not-inc Married-civ-spouse Prof-specialty White Male United-States                                                                                                                                                                      
e3 26 9 Private Divorced Craft-repair White Male United-States                                                                                                                                                                                            
e4 60 9 Private Married-civ-spouse Craft-repair White Male United-States 

我努力了

adult = pd.read_csv("Adult/dataset_full.txt", header=None)

它只给出一列。如果使用sep=' '它会给

<Error tokenizing data. C error: Expected 187 fields in line 3, saw 197>

试过了skiprows=, read_fwf()read_table()都给出了类似的结果。

有人对如何将此文件分成列有任何见解吗?

标签: pythonpandas

解决方案


如果你file.txt是这样的:

e1 47 3 Self-emp-inc Married-civ-spouse Transport-moving White Male Cuba
e2 52 16 Self-emp-not-inc Married-civ-spouse Prof-specialty White Male United-States
e3 26 9 Private Divorced Craft-repair White Male United-States
e4 60 9 Private Married-civ-spouse Craft-repair White Male United-States

然后你有四行,其中的9值用空格分隔。这样你就可以:

  • 逐行读取文件
  • 剥离并分割空间上的线
  • 将此传递给pandas DataFrame
  • (可选)headers为列创建
  • 最后将其转储到.csv文件中

例如:

import pandas as pd

with open("file.txt") as f:
    df = pd.DataFrame([line.strip().split() for line in f.readlines()])
    headers = [f"Col{i}" for i in range(1, 10)]
    df.to_csv("your_table.csv", index=False, header=headers)

输出:

在此处输入图像描述


推荐阅读