寻找一个Python解决方案,以使用pandas或regex识别不匹配正确序列的行

kknvjkwl  于 2023-05-27  发布在  Python
关注(0)|答案(1)|浏览(126)

在Python中使用pandas或regex提取正确序列不匹配的序列(行)
| 参考编号|日期|提取序列|正确序列|
| - -----|- -----|- -----|- -----|
| FGR0| 2022-05-02 16:24| 0312| 0123|
| FGR3| 2022-05-02 16:29| 0312| 0123|
| FGR1| 2022-05-02 16:32| 0312| 0123|
| FGR2| 2022-05-02 16:36| 0312| 0123|
==>上面是我的数据框。
我希望提取extracted_seq的索引位置与correct_seq不匹配的行。所以输出应该是第2行,因为这是correct_seq无法匹配的地方。
| 参考编号|日期|提取序列|正确序列|
| - -----|- -----|- -----|- -----|
| FGR3| 2022-05-02 16:29| 0312| 0123|

ohfgkhjo

ohfgkhjo1#

由于两个_seq列都有相同的值,因此您可以从每个列中提取一个值,然后逐步执行,直到找到不匹配的值,并使用不匹配的索引来选择感兴趣的行:

import pandas as pd

df = pd.DataFrame({'ref_nbr': ['FGR0', 'FGR3','FGR1', 'FGR2'],
                   'Date': ['2022-05-02 16:24','2022-05-02 16:29','2022-05-02 16:32','2022-05-02 16:35'], 
                   'extracted_seq': ['0312','0312','0312','0312'],
                   'correct_seq': ['0123','0123','0123','0123']
                   })

print(df)

s1 = df.loc[0,'extracted_seq']
s2 = df.loc[0,'correct_seq']

for i, x in enumerate(s2):
    if x!= s1[i]:
        dfx = df.iloc[[i]]
        break

print(dfx)

或者如果字符值而不是它在字符串中的位置很重要,则使用

dfx = df.iloc[[int(x)]]

相关问题