【发布时间】:2022-01-22 15:56:31
【问题描述】:
我是一名中级学习者,我有一个如下所示的 pandas 数据框:
dfx=pd.DataFrame({'ID':['ID_1','ID_2','ID_3','ID_4'],'Extracts':[['QA,QB'], ['QB,QD'], ['QA,QD'], ['QC']],'QA':[0, 0, 0, 0],'QB':[0, 0, 0, 0],'QC':[0, 0, 0, 0],'QD':[0, 0, 0, 0]})
如果 'Extracts' 列中的任何文本与最后四个列名匹配,我希望将相应的单元格从 0 转换为 1,如下表所示: 从此:
| ID | Extracts | QA | QB| QC|QD |
|----|:--------:|----|---|---|---|
|ID_1|['QA,QB'] |0 |0 |0 |0 |
|ID_2|['QB,QD'] |0 |0 |0 |0 |
|ID_3|['QA,QD'] |0 |0 |0 |0 |
|ID_4|['QC'] |0 |0 |0 |0 |
到这里:
| ID | Extracts | QA | QB| QC|QD |
|----|:--------:|----|---|---|---|
|ID_1|['QA,QB'] |1 |1 |0 |0 |
|ID_2|['QB,QD'] |0 |1 |0 |1 |
|ID_3|['QA,QD'] |1 |0 |0 |1 |
|ID_4|['QC'] |0 |0 |1 |0 |
到目前为止,我已经尝试过遍历列:
for i in list(dfx.columns[2:6]):
print(i)
if dfx.Extracts.str.contains(i).any():
dfx.i=1
但无法使其正常工作。 如果有人可以指导我完成此操作,我将不胜感激。 非常感谢。
【问题讨论】:
-
'QA,QB' 是这样还是 'QA','QB' ?
-
在Extracts col中,如上图:['QA,QB']