【问题标题】:Remove words that appear in other column, Pandas删除出现在其他列中的单词,Pandas
【发布时间】:2014-05-07 22:49:17
【问题描述】:

从一个列中的字符串中删除另一列中出现的单词的过程是什么?

例如:

Sr       A              B                            C
1      jack        jack and jill                 and jill
2      run         you should run,               you should ,
3      fly         you shouldnt fly,there        you shouldnt ,there

可以看出我想要column C,就是B减去A的内容。请注意第三个示例,其中 fly 后跟逗号,因此还应考虑标点符号(如果代码更倾向于检测其周围的空格)。
Column A 也可以有 2 个单词,所以这些需要删除。
我需要 Pandas 中的表达式,例如:

df.apply(lambda x: x["C"].replace(r"\b"+x["A"]+r"\b", "").strip(), axis=1)

【问题讨论】:

标签: python string replace pandas dataframe


【解决方案1】:

这看起来怎么样?

In [24]: df
Out[24]: 
   Sr     A                       B
0   1  jack           jack and jill
1   2   run         you should run,
2   3   fly  you shouldnt fly,there

[3 rows x 3 columns]

In [25]: df.apply(lambda row: row.B.strip(row.A), axis=1)
Out[25]: 
0                 and jill
1          you should run,
2    ou shouldnt fly,there
dtype: object

【讨论】:

  • 应该这样——?? df['C'] = 你的表情??
  • 看起来这个表达式是在“字母到字母”的基础上进行计算的。如果有一个词说 "lynch" ,当它与 "fly" 比较时,它会从 lynch 中删除 "ly" .. 我不想要那个 .. 也许单词边界排序可能会有所帮助..
  • 是的,您可能需要使用正则表达式。还要正确地捕捉标点符号。稍后我会再看一遍。
  • 哦,没问题..一旦它按预期对我有用,我会接受你的回答。
【解决方案2】:

试试这个:

x['C'] = x['B'].replace(to_replace=r'\b'+x['A']+r'\b', value='',regex=True)

它基于 previous answersomeone 告诉我如何在 pandas 中完全做到这一点。我做了一点改动以适应当前的情况:)

【讨论】:

    猜你喜欢
    • 2011-06-13
    • 2023-03-21
    • 1970-01-01
    • 2018-06-15
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    相关资源
    最近更新 更多