не может вернуть индекс значений в позиции 0-3 во фрейме данных панд - PullRequest
0 голосов
/ 17 сентября 2018

мне это кажется странным.У меня есть скрипт, который запускает текстовые файлы и по большей части работает нормально, но несколько файлов заставляют скрипт выдавать ошибку.Данные в файле выглядят так:

start time = 0.016000

Time.            Col1.       Col2
0.000000.       0.00000      0.000000
0.016000.       -0.40000.    -0.500000
0.031000.       -8.40000.    -8.900000
0.047000.       -8.72000.    -8.770000
0.062000.       -8.730000.   -8.970000

Одна из вещей, которые необходимо выполнить сценарию, - найти время начала и вернуть значение в Col2.

Я нахожу время начала с помощью регулярного выражения и проверяю оператором печати, который всегда верен, поэтому я доволен этой частью.

start = float(reg expression...)
print (start)

Затем мне нужно найти индекс началавремя, чтобы получить значение из col2

data_start = df[df['Time'] == start].index.item()

Что я заметил, это то, что (используя данные выше), если мое время начала находится в позициях 0-3 (то есть 0,0000, 0,016000, 0,031000 или 0,047000) Iполучить следующую ошибку

 data_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

Но если время начала находится в позиции 4 того же сценария (например, 0,062000 в этом случае), то возвращается индекс и сценарий выполняется отлично.Я подтвердил это, отредактировав время начала вручную в нескольких текстовых файлах данных.На самом деле не имеет значения, какое значение этих первых позиций имеет значение ValueError.

Действительно в тупик, поэтому любая помощь приветствуется!

1 Ответ

0 голосов
/ 17 сентября 2018

Эта ошибка срабатывает, когда вы работаете с пустым массивом, т. Е. Результат

df[df['Time (s)'] == start]

- пустой массив

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...