如何控制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"。细
然而:
df.at['D',1] = "Hello"
以上在df中创建了一个新行,索引为" D"并投入价值。
如何控制它,以便引发异常呢?我可以将索引设置为只读吗?
答案 0 :(得分:1)
一种方法是使用Categorical Data。请注意,这会影响任何方法,该方法尝试将项目添加到索引时,该索引在转换为Categorical时不属于索引。
df.index = pd.Series(df.index).astype('category')
# SUCCESS
df.at['C', 1] = 'Bye'
# FAIL
df.at['D', 1] = 'Hello'
你会发现:
KeyError :'D'
TypeError :无法将项目插入尚未成为现有类别的CategoricalIndex