pandas - 忽略警告 Pandas KeyError:值不在索引中
问题描述
有没有办法抑制 pandas KeyError: '[x]' not in index?例如,如果我有一个包含 ABC 列的数据框,并且我调用 df[['A','B','C','D']],是否可以让它只返回 A、B、C如果 D 不存在则忽略它?
示例代码
import pandas as pd
import numpy as np
a = np.matrix('[1,4,5];[1,2,2];[9,7,5]')
df = pd.DataFrame(a,columns=['A','B','C'])
df[['A','B','C','D']]
这是错误消息
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/pandas/core/frame.py", line 2133, in __getitem__
return self._getitem_array(key)
File "/usr/lib/python3/dist-packages/pandas/core/frame.py", line 2177, in _getitem_array
indexer = self.loc._convert_to_indexer(key, axis=1)
File "/usr/lib/python3/dist-packages/pandas/core/indexing.py", line 1269, in _convert_to_indexer
.format(mask=objarr[mask]))
KeyError: "['D'] not in index"
解决方案
选择列时,使用与所需列表的列交集。当它们存在时,您将获得所有列,并且仅获得具有较少列的子集,而不会出现任何错误。
l = ['A', 'B', 'C', 'D']
df[df.columns.intersection(l)]
A B C
0 1 4 5
1 1 2 2
2 9 7 5
推荐阅读
- javascript - HTML 自动隐藏/显示中的“阅读更多”按钮
- oracle - 在 Oracle 更新触发器 pl/sql 中获取更新记录的 ID
- vba - EXCEL VBA 使用多行循环运行求解器
- r - 使用 mutate_at 舍入 dcast data.frame 中的所有条目仅按预期舍入一些观察值
- php - 简单的 Docker/Nginx 错误 - PHP/Laravel
- python - 添加“raise”语句有区别吗?
- xml - 如何在自动完成部分将 xml 文件上传到 google cse?
- c# - 可以结合使用 Microsoft Azure SQL 和 Azure 存储吗?
- python - PyQT实时显示串口数据在QtCore.QTimer.singleShot()上抛出最大递归深度超出异常
- excel - 频率表的 Excel 公式