На вашем снимке экрана показана трассировка ошибки, т.е. вы вызвали функцию, tp.compute_drift()
, но эта функция вызвала другую функцию, pandas_sort()
, которая вызывала другую функцию и т. Д., Пока не будет вызвана raise ValueError(msg)
, которая прерывает цепочку,Последняя строка - это фактическое сообщение об ошибке:
ValueError: 'frame' is both an index level and a column label, which is ambiguous.
Чтобы понять это, вы должны знать, что Trackpy хранит данные в DataFrame
объектах из библиотеки pandas . Данные отслеживания, из которых вы хотите извлечь дрейфовое движение, хранятся в таком объекте t2
. Если вы напечатаете t2
, это, вероятно, будет выглядеть так:
y x mass ... ep frame particle
frame ...
0 46.695711 3043.562648 3.881068 ... 0.007859 0 0
3979 3041.628299 1460.402493 1.787834 ... 0.037744 0 1
3978 3041.344043 4041.002275 4.609833 ... 0.010825 0 2
Слово "рамка" - это заголовок двух столбцов, что приводит в замешательство алгоритм сортировки. Как говорится в сообщении об ошибке, сортировать таблицу по кадрам неоднозначно.
Решение
Столбцу индекса (крайнему левому углу) здесь не нужно имя, поэтому удалите его с помощью
t2.index.name = None
и повторите попытку. Проверьте, есть ли у вас новейшие версии Trackpy и Pandas.