回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有两个数据帧:</p>
<pre><code>df_bisID = pd.DataFrame({'A': ['ID1#ID2', 'ID3#ID4'],
'B': ['ID5#ID6', 'ID7#ID8'],
'C': ['ID9#ID10', 'ID11#ID12'],
'D': ['ID13#ID14', 'ID15#ID16']})
A B C D
0 ID1#ID2 ID5#ID6 ID9#ID10 ID13#ID14
1 ID3#ID4 ID7#ID8 ID11#ID12 ID15#ID16
df_eliminateID = pd.DataFrame({'A': ['ID1', 'ID3', 'ID9', 'ID11'],
'B': ['ID5', 'ID7', 'ID13', 'ID15']})
A B
0 ID1 ID5
1 ID3 ID7
2 ID9 ID13
3 ID11 ID15
</code></pre>
<p>ID很复杂,带有字母数字和唯一性('xxxx-xxxxxxxxx-xxx'+兼性后缀'-xxx-xxx')。我提出了一个简化ID的示例</p>
<p>在df_bisID中,我需要在每一列中去掉ID和#中的一个,它分别包含在df_eliminateID中的A列或B列中</p>
<p>所以我想用“ID2”替换“ID1#ID2”,用“ID10”替换“ID9#ID10”,等等</p>
<p>请注意,它也可以是“ID2#ID1”而不是“ID1#ID2”,这会使替换条件复杂化,这也是问题字符串替换的原因</p>
<p>我的问题的合理解决方案是:</p>
<pre><code>for i in df_eliminateID['A']:
df_bisID.replace(i+'#|#'+i, '')
for i in df_eliminateID['B']:
df_bisID.replace(i+'#|#'+i, '')
</code></pre>
<p>但最后,我的df#u bisID是空的,这就是为什么我请求您帮助在字符串替换中使用| regex,我想用“”替换IDX#或#IDX,以仅保留一个id。
OR在regex中,可能我没有正确使用它(regex中是否有exclusif OR?)</p>
<p>首先,谢谢你的帮助</p>
<p><strong>编辑:找到解决方案</强></p>
<p>我必须将数据帧中的一些“u”替换为“-”</p>
<pre><code>df.replace('_', '-', regex=True)
</code></pre>
<p>如果regex=False,它不起作用,我不明白确切的原因(如果有人能给我解释一下,那会很酷,我在文档中搜索了一下,但在理解方面没有任何收获)</p>
<p>所以我决定测试它是否能解决这个问题:</p>
<pre><code>dfbis = pd.DataFrame({'A': ['ID1#ID2', 'ID3#ID4'],
'B': ['ID5#ID6', 'ID7#ID8'],
'C': ['ID9#ID20', 'ID21#ID22'],
'D': ['ID23#ID24', 'ID25#ID26']})
A B C D
0 ID1#ID2 ID5#ID6 ID9#ID20 ID23#ID24
1 ID3#ID4 ID7#ID8 ID21#ID22 ID25#ID26
dfdetermine = pd.DataFrame({'A': ['ID1', 'ID3', 'ID20', 'ID22'],
'B': ['ID5', 'ID7', 'ID23', 'ID25']})
A B
0 ID1 ID5
1 ID3 ID7
2 ID20 ID23
3 ID22 ID25
for i in dfdetermine['A'], dfdetermine['B']:
print(i)
dfbis = dfbis.replace(i+'#', '', regex=True).replace('#'+i, '', regex=True)
dfbis
A B C D
0 ID2 ID6 ID9 ID24
1 ID4 ID8 ID21 ID26
</code></pre>
<p>我将ID10+改为ID20+,如果不是的话,ID1测试会干扰结果</p>
<p>此外,我还发现了一些关于字符串替换计时的信息,这些信息启发我将IDX和IDX替换放入对df.replace:<a href="https://qastack.fr/programming/3411771/best-way-to-replace-multiple-characters-in-a-string" rel="nofollow noreferrer">https://qastack.fr/programming/3411771/best-way-to-replace-multiple-characters-in-a-string</a>的两个调用中</p>
<p>你认为我的计划可以优化吗</p>