查找两个数据帧/列表中的字符串之间的差异,输出差异

时间:2019-03-27 22:11:16

标签: python excel pandas

因此,我有一张Excel工作表,我正在尝试分析两个版本之间的差异。 具体来说,我有两列; A和B。 我导入python,并使用熊猫将A和B都设置为自己的数据帧(分别称为dfA和dfB)。这里有以下内容:

key dfA dfB 1 cat bigcat 2 dog smalldog 3 mouse hugemouse 4 child normalchild

我正在尝试输出第三列,其中包含两个数据帧之间的字符串差异,因此本质上是第三数据帧/列:

ABdifference
big
small
huge
normal

我已经考虑使用difflib库,但是我认为它不会以可读的格式产生结果

我将粘贴到目前为止的代码,但实际上并没有多少,因为我已经有一段时间没有编码了,我认为这比我想象的要容易...

import pandas as pd
from pandas import ExcelWriter
import difflib

df = pd.read_excel('somesheet.xlsx', sheet_name='Diff')

first= df['A']
second = df['B']

我不喜欢使用熊猫和数据框的想法,我只是假设这是处理excel数据的最佳方法。

如果有人可以提供帮助,将不胜感激!

欢呼

2 个答案:

答案 0 :(得分:0)

您可以将Dataframe.applylambda函数一起使用:

print(dfA, '\n')
print(dfB)

    col1
0    cat
1    dog
2  mouse
3  child 

          col2
0       bigcat
1     smalldog
2    hugemouse
3  normalchild

使用pd.concat组合数据框:

df_combined = pd.concat([dfA, dfB], axis=1)
print(df_combined)
    col1         col2
0    cat       bigcat
1    dog     smalldog
2  mouse    hugemouse
3  child  normalchild

.applyreplace一起使用

df_combined['col'] = df_combined.apply(lambda x: x['col2'].replace(x['col1'], ''), axis=1)

print(df_combined)
    col1         col2     col
0    cat       bigcat     big
1    dog     smalldog   small
2  mouse    hugemouse    huge
3  child  normalchild  normal

答案 1 :(得分:0)

您可以尝试以下公式:

=IF(FIND(A2,B2)>1,LEFT(B2,FIND(A2,B2)-1),IF(FIND(B2,B2)=1,RIGHT(B2,LEN(B2)-LEN(A2))))