【发布时间】:2021-10-01 13:11:31
【问题描述】:
我有一个如下所示的数据框
df = pd.DataFrame({'sub_id': [101,101,101,102,102,103,104],
'test_status':['Y','N','Yes','No','Not sure','NOT SURE','YES'],
'remarks':[np.nan,"testvalue",np.nan,"ilike","wild",np.nan,"test"],
'reg_value':['YES','NO','Y','N','SURE','YES','no'],
'TEST':['RES','YES','SAF','YWQTEU','JHLK','1265','QEEU']})
基本上,我想做以下事情
a) 从下面给出的response 列表中获取仅具有值的列的名称
response = ['Y','y','YES','Yes','yes','NO','No','no','N','n','NOT SURE','Not sure','not sure','sure','SURE','Sure']
该列不应包含除response list 中提及的值之外的任何其他值。
例如:column Test 不应出现在输出中,因为与 YES 一起,它包含其他不在 response 列表中的值。
所以,我尝试了以下但输出不正确。不知道如何排除TEST 列。
df.apply(lambda row: row[row.isin(response)].index.tolist(), axis=1)
我希望我的输出如下所示
op_col_list = ['test_status','reg_value']
所以,我有两个问题
a) 如何排除TEST 列以供考虑?
b) 如何使response 列表优雅。如您所见,由于大写和小写表示,这些值正在重复。无论如何要使列表不区分大小写
【问题讨论】:
标签: python python-3.x pandas dataframe series