返回两个字符串之间的差异(无论其类型如何)



我们有一个数据帧,需要比较它的两列。

Column 1 (Name: PN) = 555, 333, 444

Column 2 (Name: whatever)= "555A", 333, "444B"

我们需要得到差异,即";A";以及";B">。在网络中发现的两种变体在我的尝试中都不起作用。这些是列,因此是一个系列。因此,Split方法不适用。Replace方法确实有效,但不会返回所需的差异。diff还返回一些非常周到的内容,但不是所需的差异。

对于所有类型的数据(数字、字符串等(,有没有一个通用的解决方案?非常感谢。

您可以使用循环,检查字符串中是否存在字符,然后将差异保存在变量中。

以下是在python中执行此操作的方法:

x = 'abcd'
y = 'cdefg'
s = ''
t = ''
for i in x: # checking x with y
if i not in y:
s += i
for i in y: # checking y with x
if i not in x:
t += i
print(s)  # ab
print(t)  # efg

编辑:

我想你在熊猫专栏工作,所以这里有一些代码可以帮助你:

# importing pandas as pd
import pandas as pd

# Creating the DataFrame
df = pd.DataFrame({'PN':[555, 444, 333, 222, 111],
'whatever':['555A', 444, '333B', 222, '111C'],})

A=list(df['PN']) # Coverting Column to a list
B=list(df['whatever']) # Coverting Column to a list
def convert_str(a): # Function to convert element of list to string
return str(a)
C=[convert_str(i) for i in A] # Converting Element in List A to string
D=[convert_str(i) for i in B] # Converting Element in List B to string
E="".join(C) # Joinning the list C
F="".join(D) # Joinning the list D
diffrence=[i for i in F if i not in E] # Differences of F-E
print(diffrence) 
# Output ['A', 'B', 'C']

您可以使用最长公共子字符串实现diff函数。

这是我的旧函数,用于获取字符串之间的差异(TypeScript(。

按下run,你会看到它正确地识别出A和B被添加了:(

这就是";一般的";解决方案如果你能提供更多的上下文,就会有一个更有效的方法。

相关内容

最新更新