我正在尝试创建一个新的pandas列,其中包含两个其他列之间的差异。
我拥有的:colA| colB|这是测试|这是一个测试|
我想要什么可乐|colB|这是测试|这是一个测试|这是一个___
这是我目前所拥有的代码
def tokenize(s):
return re.split('\s+', s)
def untokenize(ts):
return ' '.join(ts)
def equalize(s1, s2):
l1 = tokenize(s1)
l2 = tokenize(s2)
res1 = []
res2 = []
prev = difflib.Match(0,0,0)
for match in difflib.SequenceMatcher(a=l1, b=l2).get_matching_blocks():
if (prev.a + prev.size != match.a):
for i in range(prev.a + prev.size, match.a):
res2 += ['_' * len(l1[i])]
res1 += l1[prev.a + prev.size:match.a]
if (prev.b + prev.size != match.b):
for i in range(prev.b + prev.size, match.b):
res1 += ['_' * len(l2[i])]
res2 += l2[prev.b + prev.size:match.b]
res1 += l1[match.a:match.a+match.size]
res2 += l2[match.b:match.b+match.size]
prev = match
return untokenize(res1), untokenize(res2)
print(untokenize(res1), untokenize(res2))
下面是示例字符串的代码的输出:('this is a test _______','this is a ____testing')
但我想将它应用于跨两个不同列的pandas dataframe,并返回一个带有结果的新列。
1条答案
按热度按时间6ie5vjzr1#
你也许想试试
注意-设置轴=1将帮助您访问单个行的各个列。查找更多关于pandas apply here的信息。