【问题标题】:Subtract one text column from the other using pandas使用熊猫从另一个文本列中减去一个文本列
【发布时间】:2023-01-25 18:10:56
【问题描述】:

我想以矢量方式从另一列中删除一列中的文本。意思是,不使用循环或应用。 我发现这个解决方案不再有效 old solution link

输入:

pd.DataFrame({'A': ['ABC', 'ABC'], 'B': ['A', 'B']})

     A  B
0   ABC A
1   ABC B

期望的输出:

0    BC
1    AC

【问题讨论】:

  • 你在 B 中有很多倍的相同价值吗?真实数据集中df['B'].value_counts()的输出是什么?
  • 是的,B 值非常重复,有时它们在 A 中的相应值内,有时则不在。

标签: python pandas


【解决方案1】:

使用列表理解:

df['C'] = [a.replace(b, '') for a,b in zip(df['A'], df['B'])]

输出:

     A  B   C
0  ABC  A  BC
1  ABC  B  AC

如果你想要一个系列:

out = pd.Series([a.replace(b, '') for a,b in zip(df['A'], df['B'])], index=df.index)

输出:

0    BC
1    AC
dtype: object

【讨论】:

  • 感谢您的建议。但是,我想避免循环,并以矢量方式进行,这就是我要求不要使用 apply 的原因。
  • 不幸的是,您不能以矢量方式进行。列表理解将比apply更快。
  • 你是对的,谢谢!
猜你喜欢
  • 2013-12-04
  • 1970-01-01
  • 2019-08-07
  • 2017-09-01
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
相关资源
最近更新 更多