python-3.x - 如何计算熊猫数据框中2个字符串列之间的差异
问题描述
我在同一个数据框中有 2 列,如下所示:
A B
abcdef(as3456) as3456
pqrst(dh6546) dh6546
我需要创建另一列 C,如下所示:
C
abcdef
pqrst
我已经能够从 A 创建列 B 但是,我的目的还没有完全实现。正如我在 A 列和 B 列中提到的那样,有人可以帮我获得 C 列吗?我尝试做!= 运算符和“~loc”。但是,在这种情况下这似乎不起作用。(可能是因为它是一个字符串)
解决方案
对于每行列之间的差异,请使用replace
with 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
推荐阅读
- java - 如何更新 MongoDB @DbRef 嵌入式集合?
- pine-script - 如果我根据代码在同一天建仓,如何在一天结束时平仓?
- sql - 甲骨文 | varchar2 | 数相等 | 不同的输出
- android - 尝试在 Android Studio 上为 FCM 记录我的设备令牌时遇到问题
- html - 如何更改html表格内的边框大小?
- android - 自定义可绘制形状 android
- graphql - 过滤 graphql 模式的最佳方法是什么?或者,如何从 GraphQL 工具中导出模式?
- reactjs - onClick 在反应中的样式组件中不起作用
- react-native - React Native 在类中使用 useState 错误:缩小的 React 错误 #321
- javascript - Koltin 多平台 Javascript IR 构建创建空模块