Почему -1 вызывает ключевую ошибку в pandas после сброса индекса кадра данных и как заставить его работать - PullRequest
1 голос
/ 30 мая 2020

Допустим, у меня есть фрейм данных pandas, и индексирование -1 не работает после сброса его индекса. Как заставить его работать, как было раньше и почему в этом случае не работает?:

enter image description here

enter image description here

Ответы [ 2 ]

2 голосов
/ 30 мая 2020

Попробуйте следующее:

list(data.reset_index()['Date'])[-1]

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

Это небольшой пример, который я пробовал на образце dummy df:

'''
year    key val
2019    a   3
2019    a   4
2019    b   3
2019    c   5
2020    d   6
2020    e   1
2020    f   2
'''

import pandas as pd

df = pd.read_clipboard()

print(df)

Source df:

   year  key  val
0  2019  a      3
1  2019  a      4
2  2019  b      3
3  2019  c      5
4  2020  d      6
5  2020  e      1
6  2020  f      2

Обе эти ошибки ключа выброса:

mask = df['year'][-1]
print(mask)

или

mask = df.reset_index()['year'][-1]
print(mask)

Вывод:

KeyError: -1

Оба эти действия работают:

mask = list(df.reset_index()['year'])[-1]

или

mask = list(df['year'])[-1]

Вывод:

2020
0 голосов
/ 30 мая 2020

Вы можете рассмотреть возможность использования свойства df.loc() или df.iloc(). В вашем случае это может быть (см. Документацию ).

data.rerset_index()['Date'].iloc(-1)

Вместо сброса индекса вы также можете просто написать data.index[-1].

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