Управлять поведением df.at или df.loc - PullRequest
0 голосов
/ 29 мая 2018

Как можно контролировать поведение df.at() или df.loc(), чтобы в случае отсутствия совпадения с индексом возвращалось KeyError или IndexError?Например:

import pandas as pd

index = ['A','B','C']
headers = [1,2,3,4]

df = pd.DataFrame(index=index,columns=headers)

df.at['A',1] = "Hello"

Обновляет значение в соответствующем месте в df до «Hello».Fine.

Однако:

df.at['D',1] = "Hello"

Выше создается новая строка в df с индексом "D" и вводится значение.

Как мне управлять этим, чтобы вместо него выдавалось исключение?Можно ли, например, сделать индекс доступным только для чтения?

1 Ответ

0 голосов
/ 29 мая 2018

Один из способов - использовать Категориальные данные .Обратите внимание, что это повлияет на любой метод, который пытается добавить элемент в индекс, который не принадлежит к индексу, когда он был преобразован в Категориальный.

df.index = pd.Series(df.index).astype('category')

# SUCCESS
df.at['C', 1] = 'Bye'

# FAIL
df.at['D', 1] = 'Hello'

Вы найдете:

KeyError : 'D'

TypeError : не удается вставить элемент в CategoryoricalIndex, который еще не существует в категории

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