【问题标题】:Concatenating partial strings from dataframe columns从数据框列连接部分字符串
【发布时间】:2023-01-31 00:42:17
【问题描述】:

我有一个 csv,其中有一列应该是其他两列的串联,但我需要检查这是否属实。

extID,Name,internalID
abc.xyz.123,01312023_A-es-us,abc.xyz.123_01312023_A-es-us
abc.xyz.123,01312023_H-es-us,abc.xyz.123_01312023_H-es-us
abc.xyz.456,01312023_A-es-us,abc.xyz.456_01312023_A-es-us
abc.xyz.456,01312023_H-es-us,abc.xyz.456_01312023_H-es-us
abc.xyz.789,01312023_N_es-us,abc.xyz.789_01312023_N_es-us
abc.xyz.876,01312023_N_es-us,abc.xyz.876_01312023_A_es-ca
abc.xyz.123,01312023_A-en-us,abc.xyz.123_01312023_A-en-us

internalID 应该是 extIDName 的串联,由 _ 分隔。但是你可以在第 6 行看到,情况并非如此。所以我想创建一个显示通过/失败状态的新列。

      extID             Name                      internalID    isCorrect?
abc.xyz.123 01312023_A-es-us    abc.xyz.123_01312023_A-es-us          PASS
abc.xyz.123 01312023_H-es-us    abc.xyz.123_01312023_H-es-us          PASS
abc.xyz.456 01312023_A-es-us    abc.xyz.456_01312023_A-es-us          PASS
abc.xyz.456 01312023_H-es-us    abc.xyz.456_01312023_H-es-us          PASS
abc.xyz.789 01312023_N_es-us    abc.xyz.789_01312023_N_es-us          PASS
abc.xyz.876 01312023_N_es-us    abc.xyz.876_01312023_A_es-ca          FAIL
abc.xyz.123 01312023_A-en-us    abc.xyz.123_01312023_A-en-us          PASS

除了 regex + str.contains 之外,还有更好的方法吗?

【问题讨论】:

    标签: python pandas regex


    【解决方案1】:

    您可以将 str.catmap 一起使用:

    d = {True: "PASS", False: "FAIL"}
    ​
    df["isCorrect?"] = df["extID"].str.cat(df["Name"], sep="_").eq(df["internalID"]).map(d)
    

    的 输出 :

    print(df)
             extID              Name                    internalID isCorrect?
    0  abc.xyz.123  01312023_A-es-us  abc.xyz.123_01312023_A-es-us       PASS
    1  abc.xyz.123  01312023_H-es-us  abc.xyz.123_01312023_H-es-us       PASS
    2  abc.xyz.456  01312023_A-es-us  abc.xyz.456_01312023_A-es-us       PASS
    3  abc.xyz.456  01312023_H-es-us  abc.xyz.456_01312023_H-es-us       PASS
    4  abc.xyz.789  01312023_N_es-us  abc.xyz.789_01312023_N_es-us       PASS
    5  abc.xyz.876  01312023_N_es-us  abc.xyz.876_01312023_A_es-ca       FAIL
    6  abc.xyz.123  01312023_A-en-us  abc.xyz.123_01312023_A-en-us       PASS
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-31
      • 2023-03-13
      • 2019-02-15
      • 1970-01-01
      • 2023-01-03
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      相关资源
      最近更新 更多