首页 > 解决方案 > 如何计算熊猫数据框中2个字符串列之间的差异

问题描述

我在同一个数据框中有 2 列,如下所示:

A               B
abcdef(as3456)    as3456
pqrst(dh6546)     dh6546

我需要创建另一列 C,如下所示:

  C
 abcdef
 pqrst

我已经能够从 A 创建列 B 但是,我的目的还没有完全实现。正如我在 A 列和 B 列中提到的那样,有人可以帮我获得 C 列吗?我尝试做!= 运算符和“~loc”。但是,在这种情况下这似乎不起作用。(可能是因为它是一个字符串)

标签: python-3.xpandas

解决方案


对于每行列之间的差异,请使用replacewith strip

df = pd.DataFrame({'A': ['abcdef(as3456)', 'pqrst(dh6546)', 'abcdef(dh6546)'], 
                   'B': ['as3456', 'dh6546', 'as3456']})

print (df)
                A       B
0  abcdef(as3456)  as3456
1   pqrst(dh6546)  dh6546
2  abcdef(dh6546)  as3456#df.B not matched per rows, but matched abcdef by first value of df.B

#replace values from df.B per rows
df['C'] = [i.replace(j, '').strip('()') for i, j in zip(df.A, df.B)]

#replace all values from df.bvalues
pat = '|'.join([r'\({}\)'.format(i) for i in df.B])
df['D'] = df.A.str.replace(pat, '')
print (df)
                A       B              C       D
0  abcdef(as3456)  as3456         abcdef  abcdef
1   pqrst(dh6546)  dh6546          pqrst   pqrst
2  abcdef(dh6546)  as3456  abcdef(dh6546  abcdef

推荐阅读