python - 使用由布尔索引创建的数据框时出错
问题描述
编辑
我有这个数据框:
df = pd.DataFrame({'a':['nonono','sisisis','some_other_string', 'blebleble',
'jajajaja', 'ohyeah','some_string','blablablananana'],
'b':[0,1,2,3,4,5,6,7]})
正如文档所说,我做了一个布尔索引来创建一个新的数据框。
df2 = df.loc[df.a != 'some_string', :]
检查我制作的数据帧长度的差异,print(len(df) > len(df2))
输出是True
. 这意味着布尔索引正确,不是吗?
但是,KeyError: 6
当我训练根据某些条件打印 True 或 False 时,它会提高。这是代码:
for i in list(range(len(df2.a))):
if 'blabla' in df2.a[i]:
print(True)
else:
print(False)
输出是
False
False
False
False
False
False
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-85-2c4113790af5> in <module>()
1 for i in list(range(len(facturacion.formulario))):
----> 2 if 'NOTA DE CREDITO' in facturacion.formulario[i]:
3 print(True)
4 else:
5 print(False)
1 frames
/usr/local/lib/python3.6/dist-packages/pandas/core/indexes/base.py in get_value(self, series, key)
4403 k = self._convert_scalar_indexer(k, kind="getitem")
4404 try:
-> 4405 return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))
4406 except KeyError as e1:
4407 if len(self) > 0 and (self.holds_integer() or self.is_boolean()):
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_value()
pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
KeyError: 6
如果我做
for i in list(range(len(df2.a[:6]))):
if 'blabla' in df2.a[i]:
print(True)
else:
print(False)
输出是
False
False
False
False
False
False
我无法意识到发生了什么。有什么建议吗?
解决方案
我认为这是问题所在:
df2.a[i]
您的第 6 个索引在编制索引时被删除
df2 = df.loc[df.a != 'some_string', :]
您应该重置索引:
df2.reset_index(drop=True)
或者你应该使用 loc:
df2.a.loc[i]
推荐阅读
- javascript - TypeError:不是继承对象函数的函数
- python - 我无法对数据框进行分组。我想分组并将索引设置为 ID
- sql - 蜂巢查询中的奇怪错误:SemanticException 无法将窗口调用分解为组
- c# - 来自角度的.net api控制器中的错误日期接收
- azure-active-directory - 未经授权的用户尝试访问网页时的无限循环(通过 adal-angular 授权)
- c# - 与以下 json 匹配的确切 C# 类是什么?嵌套两个json对象同名问题
- java - 使用 ListIterator 编写插入排序
- javascript - 无序数组中的最小数
- css - 使用css在字体真棒图标下方写文字
- javascript - 如何在表格中间可滚动时固定页脚和页眉