У меня есть скрипт Python, который извлекает данные из файла CSV для обработки. Данные, с которыми я работаю, выглядят примерно так
Time. Col1. Col2. Col3. Important
0.1 .02 .03 .02 .02
0.2. .03 .03 .02 .03
Сценарий извлекает столбцы Время и Важное для обработки. Когда присутствуют все столбцы, скрипт работает нормально, используя
# specify the row headers seven lines down the file
names = ['Time (s)', 'Col1', 'Col2', 'Col3', 'Important']
df = pd.read_csv(fle,
delim_whitespace=True,
error_bad_lines=False,
encoding='utf-8',
names=names,
skiprows=7)
Моя проблема в том, что при создании файла пользователь может отклонить определенные столбцы, то есть я могу получить столбец меньше.
Time. Col1. Col3. Important
0.1 .02 .03 .02
0.2. .03 .03 .03
Но поскольку в моем списке «имен» есть все заголовки, которые могут быть в файле, скрипт не распознает заголовки столбцов и не обрабатывает эти файлы. (это не приводит к ошибке, только получающиеся графики являются пустыми, как будто нет данных).
Этот сценарий выполняет итерацию по папке из примерно 50 файлов, которые имеют от 3 до 9 столбцов, но два из них всегда имеют значение Время и Важность.
Есть ли способ сообщить пандам, что некоторые или все заголовки столбцов в списке «имен» могут присутствовать?
Я попытался просто сократить «имена» до «Время» и «Важно», но позже в коде возникает ошибка, когда мне приходится индексировать определенные позиции столбца «Время».
Traceback (most recent call last):
File "...inter-through-filesv2.py", line 55, in <module>
loop_start = df[df['Time (s)'] == start].index.item()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/core/base.py", line 719, in item
return self.values.item()
ValueError: can only convert an array of size 1 to a Python scalar