当前位置: 首页 > 知识库问答 >
问题:

对多列应用相同条件[重复]

华善
2023-03-14

我有一个包含15个独立ICD列(ICD1ICD15)的数据帧,并且希望创建一个变量“encep”(0/1),当数字“323”出现在15个ICD列中的任何一个时。

dataframe本身包含30多个变量,如下所示

PT_FIN    DATE     Address...     ICD1    ICD2...      ICD15
1         July      123 lane        523    432         .
2         August    ABC road        523    43.6       12.8

不完全确定我是否在正确的轨道上,但我编写了以下代码试图完成我的任务,但得到了一个错误:

ICDA = ["ICD1","ICD2","ICD3","ICD4","ICD5","ICD6","ICD7","ICD8","ICD9","ICD10","ICD11","ICD12","ICD13","ICD14","ICD15"]

ICD1.loc[:,"Encep"]=np.where(ICD1["ICDA"].str.contains("323", case=False),1,0)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2889             try:
-> 2890                 return self._engine.get_loc(key)
   2891             except KeyError:

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'ICDA'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-34-564afcae6cd2> in <module>
      1 ICDA= ["ICD1","ICD2","ICD3","ICD4","ICD5","ICD6","ICD7","ICD8","ICD9","ICD10","ICD11","ICD12","ICD13","ICD14","ICD15"]
----> 2 ICD1.loc[:,"LumbPCode"]=np.where(ICD1["ICDA"].str.contains("323", case=False),1,0)

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   2973             if self.columns.nlevels > 1:
   2974                 return self._getitem_multilevel(key)
-> 2975             indexer = self.columns.get_loc(key)
   2976             if is_integer(indexer):
   2977                 indexer = [indexer]

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2890                 return self._engine.get_loc(key)
   2891             except KeyError:
-> 2892                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2893         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
   2894         if indexer.ndim > 1 or indexer.size > 1:

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'ICDA'

在Pandas中多列上查找字符串

共有1个答案

潘翊歌
2023-03-14

Keyerror来自这样一个事实,即在您的数据帧中没有称为ICDA的列(即没有'key')。

对该列调用.str.contains(即使它存在)也没有意义,因为它看起来是一列列名。

可能的解决办法

ICDA = ["ICD1","ICD2","ICD3","ICD4","ICD5","ICD6","ICD7","ICD8","ICD9","ICD10","ICD11","ICD12","ICD13","ICD14","ICD15"]

# if those cols aren't strings, make them (probably best to leave as float and compare, tho)
for col in ICDA:
    ICD1[col] = str(ICD1[col])

ICD1['Encep'] = (ICD1[ICDA].values == '323').any(1).astype(int)
 类似资料:
  • 我想知道我是否能得到一些帮助,让我的java看起来更好。目前,我正在做一些家庭作业,当我纠正一个if语句的多个条件时,它看起来非常混乱,就像下面的一个。我试着看看str.charat(p)是否等于任何元音,但是这看起来很糟糕,一个接一个地写出来。有更好的办法吗?

  • 问题内容: 我尝试了使用“注释”对Hibernate进行“多对多映射”以及vaannila中给出的示例。 http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many- to-many-using-annotations-1.html 这个东西工作正常。但是,如果我稍后尝试向现有的学生添加另一门课程, 它在表中

  • 我想显示一个名为listaBaresFiltrada的列表,按多个值排序。 Evento模型: 现在,我可以创建第一个排序条件,如下所示: 但我不知道如何包括其他两个排序条件。

  • 问题内容: 我正在寻找一种“更好”的方式来执行查询,在该查询中,我想向单个玩家显示他之前玩过的游戏以及与每个此类对手相关的获胜记录。 以下是涉及的表格,精简如下: 因此,约翰对玛丽的战绩是2胜1负。vs鲍勃1胜0负; 和爱丽丝的3胜2负。 我正在使用Postgres 9.4。我脑海中有些东西告诉我要考虑一下,但是我很难理解这样的“形状”。 以下是我当前正在使用的查询,但是有些“感觉不到”。请帮助我

  • 我有一个数据帧,我想删除a列等于蓝色,B列等于绿色的所有行。 我认为下面的应该工作,但事实并非如此。 有人看到问题了吗

  • 我有如下格式的表结构: 我想把属性ID作为参数传递,然后得到一个为它分配了所有属性的projectId。 如果我通过了20、30个属性ID,我应该只得到570个项目ID,而不是87,因为30没有分配给87。 上面的查询给我,下面的结果是不正确的。