#python #pandas
#python #pandas
Вопрос:
Необработанный файл .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()
дает все аналогичный результат.
Есть ли у кого-нибудь идеи о том, как разделить этот файл на столбцы?
Комментарии:
1. Боюсь, вы не сможете сделать это напрямую, потому что у вас есть пробелы в качестве разделителя и такие значения, как «Белый мужчина», внутри которых есть пробел. Вам придется читать данные построчно и разбивать строки на список значений вручную
2. Также похоже, что в вашем txt-файле много пробелов после каждой строки, что может помешать инструментам чтения pandas при использовании
sep=' '
. Попробуйте сsep='s '
Ответ №1:
Если ваш 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)
Вывод: