我有一个如下所示的DataFrame:
Full Partial
ABCDEFGHIJKLMNOPQRSTUVWXYZ FGHIJKL
ANLHDFKNADHFBAKHFGBAKJFB FKNADH
JABFKADFNADKHFBADHBFJDHFBADF ABFKA
我想要做的是将Full
中与Partial
不匹配的所有内容放在小写字母中,产生以下内容:
Coverage
abcdef_GHIJKL_mnopqrstuvwxyz
anlhd_FKNADH_fbakhfgbakjfb
j_ABFKA_dfnadkhfbadhbfjdhfbadf
我该怎么做?我环顾四周,似乎series.str.extract()
可能是一个解决方案,但我不确定,当我尝试这样做时:
df['Full'].str.extract(data['Partial'])
......它只说系列无法播放。我假设extract
只接受一个参数,而不是一个系列?有没有办法绕过这个? extract
甚至是正确的方式来实现我正在寻找的东西,还是有另一种方式?我想我可能会找到提取字符串索引并执行以下伪代码的方法:
df['Coverage'] = data['Full'][:start].lower() + '_' + data['Partial'] + \
'_' + data['Full'][End:].lower()
...其中Start
和End
分别是data['Partial']
开始和结束的索引。想法?
答案 0 :(得分:2)
也许不是最优雅,但这是一个解决方案:
对于df:
Full Partial
0 ABCDEFGHIJKLMNOPQRSTUVWXYZ FGHIJKL
1 ANLHDFKNADHFBAKHFGBAKJFB FKNADH
2 JABFKADFNADKHFBADHBFJDHFBADF ABFKA
此:
df.apply(lambda r: r.Full.lower().replace(r.Partial.lower(), '_' + r.Partial + '_'), axis=1)
返回:
0 abcde_FGHIJKL_mnopqrstuvwxyz
1 anlhd_FKNADH_fbakhfgbakjfb
2 j_ABFKA_dfnadkhfbadhbfjdhfbadf
对于每一行,将完整字符串转换为小写,并将“部分字符串”替换为原始部分字符串,并在两侧添加两个下划线。