【发布时间】:2020-02-01 05:57:27
【问题描述】:
我尝试搜索这个问题的答案,但找不到它......所以就这样吧。
我有一个包含 23987 列的数据集。我实际上只想要其中 35 个列中的信息(它们之间相当分散)。我已将这 35 个项目列在一个列表中。我想知道是否有一种快速的方法通过传递列表删除除列之外的所有列
我试过这个:
df1.drop(df1.columns.difference([ALTJ_genes]), axis=1, inplace=True)
ALTJ_genes 是包含 35 个项目的列表。我得到的错误是:
TypeError: unhashable type: 'list'
我想知道是否有办法做到这一点,我知道我可以通过传递各个列来达到我的目标,但我想知道列表是否可行。这将使代码更清晰。
无论如何,谢谢!
编辑:我提供了一些截图,也许有用。
现在,这是我在传递包含所有基因的列表时得到的完整错误。
---------------------------------------------------------------------------
KeyError Traceback(最近一次调用最后一次) 在 ----> 1 df1[ALTJ_genes]
/opt/anaconda3/lib/python3.7/site-packages/pandas/core/frame.py in getitem(self, key) 2984 如果 is_iterator(key): 第2985章 -> 2986 索引器 = self.loc._convert_to_indexer(key, axis=1, raise_missing=True) 2987 2988 # take() 不接受布尔索引器
/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in _convert_to_indexer(self, obj, axis, is_setter, raise_missing) 1283 # 设置时,即使使用 .loc,也不允许缺少键: 1284 kwargs = {“raise_missing”:如果is_setter为真,否则为raise_missing} -> 1285 返回 self._get_listlike_indexer(obj, axis, **kwargs)1 1286 其他: 1287尝试:
/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in _get_listlike_indexer(self, key, axis, raise_missing) 1090 第1091章 -> 1092 keyarr,索引器,o._get_axis_number(轴),raise_missing=raise_missing 1093) 1094 返回keyarr,索引器
/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexing.py in _validate_read_indexer(self, key, indexer, axis, raise_missing) 第1175章 第1176章 -> 1177 键=键,轴=self.obj._get_axis_name(轴) 第1178章) 第1179章
KeyError: "None of [Index([ ('APEX1',), ('ASF1A',), ('CDKN2D',), ('CIB1',), ('DNA2',),\n ( 'FAAP24',), ('FANCM',), ('GEN1',), ('HRAS',), ('LIG1',),\n ('LIG3',), ('MEN1',), ('MRE11',), ('MSH3',), ('MSH6',),\n ('NUDT1',), ('MTOR',), ('NABP2',), ('NTHL1',) , ('PALB2',),\n ('PARP1',), ('PARP3',), ('POLA1',), ('POLM',), ('POLQ',),\n ('PRPF19 ',), ('RAD51D',), ('RBBP8',), ('RRM2',), ('RUVBL2',),\n ('SOD1',), ('KAT5',), (' UNG',), ('WRN',), ('XRCC1',)],\n dtype='object', name='Gene_Name')] 在[列]"
【问题讨论】: