Мое требование состоит в том, чтобы прочитать несколько файлов CSV, содержащих интересующие меня данные после n
количества строк. Это число n
не является постоянным, так как оно варьируется для разных CSV (поэтому я не могу использовать пропуски).
Формат CSV следующий:
Test: Rate1, "2" , units
specimen: Rectangular, "3", units
Time, Estimate, Load
(s) , (units) , (N)
"1","2","4"
"5","8","12"
Другой CSV, вероятно, будет:
Test: Rate1, "2" , units
specimen: Rectangular, "3" , units
value_based : Sample7, "9" , product
Test_condition: controlled, "0" , test
Time, Estimate, Load
(s) , (units) , (N)
"12","6","8"
"18","3","2"
Но меня интересуют только имена столбцов: [Time
, Estimate
, Load
].
Я хочу сделать следующее:
Получите данные с указанием заголовков Time
, Estimate
и Load
.
Пропустите первую строку значений ( (s) , (units), (N)
), так как я хочу объединить их с заголовками и переименовать их в
Time(s) , Estimate(units), Load(N)
.
Это то, что я пробовал:
with open(file,"r+",newline = "") as csvFile:
dictReader = csv.DictReader(csvFile)
for row in dictReader:
print(row["Time"], row["Load"], row["Extension"])
df = pd.read_csv(file,usecols=["Time","Load","Extension"])
print(df["Time"].head(3))
Пожалуйста, предложите, как мне нужно поступить, чтобы получить данные с моими предполагаемыми заголовками. Заранее спасибо.
Спасибо @D_Serg. Это решает часть моего вопроса с помощью функции полезности. Я просто все еще думаю, можно ли добиться того, чего я хочу, может быть, другим путем.
Я не думаю, что сам Pandas может определить правильную начальную строку, но это можно сделать с небольшой подготовкой файла, чтобы определить правильную строку. Например:
import pandas as pd
import csv
filename = 'test.csv'
header_row = ["Time", "Estimate", "Load"]
with open(filename, newline='') as f_csv:
for row_number, row in enumerate(csv.reader(f_csv), start=-1):
if row == header_row:
break
df = pd.read_csv(filename, skiprows=row_number, names=header_row)
print(df)
Предоставление:
Time Estimate Load
0 1 2 4
1 5 8 12
Спасибо. По совпадению, я подумал об этом методе после того, как опубликовал вопрос, реализовал его, и он решил мою проблему. Это правильный метод.
Вы видели этот stackoverflow.com/questions/36503074/…