Поиск номера строки заголовка в файле CSV / Pandas Dataframe - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь получить индекс или номер строки для строки, которая содержит заголовки в моем CSV-файле.Проблема в том, что строка заголовка может перемещаться вверх и вниз в зависимости от вывода отчета из нашей системы (я не могу это изменить)

код:

ht = pd.read_csv(file.csv)
test = ht.get_loc('Code') #Code being header im using to locate the header row
csv1 = read_csv(file.csv, header=test)
df1 = df1.append(csv1) #Appending as have many files

Если ядолжен был напечатать тест, я ожидал бы число около 4 или 5, и это то, что я подаю во второе чтение «read_csv»

Ошибка, которую я получаю, состоит в том, что она ожидает 1 столбец заголовка, но яесть 26 столбцов.Я просто пытаюсь использовать первую строку заголовка, чтобы получить номер строки

Спасибо: -)

Редактировать:

CSV формат

This file contains the data around the volume of items blablalbla
the deadlines for delivery of items a - z is 5 days
the deadlines for delivery of items aa through zz are 3 days
the deadlines for delivery of items aaa through zzz are 1 days
code,type,arrived_date,est_del_date
a/wrwgwr12/001,kids,12-dec-18,17-dec-18
aa/gjghgj35/030,pet,15-dec-18,18-dec-18

поскольку вы увидите, что строки «крайних сроков» совпадают, это может быть 3 или 5 в зависимости от идентификаторов кода, поэтому строка заголовка может изменяться вверх или вниз.

Я также не выписал все 26заголовки столбцов, не уверен, что это имеет значение.

Требуемый формат DF

index |    code         |   type   | arrived_date | est_del_date
1     | a/wrwgwr12/001  |   kids   |   12-dec-18  | 17-dec-18
2     | aa/gjghgj35/030 |  Pet     |  15-dec-18   | 18-dec-18

Надеюсь, это имеет смысл ..

Спасибо,

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете использовать модуль csv, чтобы найти первую строку, содержащую разделитель, а затем передать индекс этой строки в качестве параметра skiprows в pd.read_csv:

from io import StringIO
import csv
import pandas as pd

x = """This file contains the data around the volume of items blablalbla
the deadlines for delivery of items a - z is 5 days
the deadlines for delivery of items aa through zz are 3 days
the deadlines for delivery of items aaa through zzz are 1 days
code,type,arrived_date,est_del_date
a/wrwgwr12/001,kids,12-dec-18,17-dec-18
aa/gjghgj35/030,pet,15-dec-18,18-dec-18"""

# replace StringIO(x) with open('file.csv', 'r')
with StringIO(x) as fin:
    reader = csv.reader(fin)
    idx = next(idx for idx, row in enumerate(reader) if len(row) > 1)  # 4

# replace StringIO(x) with 'file.csv'
df = pd.read_csv(StringIO(x), skiprows=idx)

print(df)

              code  type arrived_date est_del_date
0   a/wrwgwr12/001  kids    12-dec-18    17-dec-18
1  aa/gjghgj35/030   pet    15-dec-18    18-dec-18
...