加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python-从基于另一列的列中删除子字符串

发布时间:2020-12-17 17:38:24 所属栏目:Python 来源:网络整理
导读:尝试使用一列中的值(作为字符串)来确定要从另一列中删除的内容.列的其余部分必须保持不变. 示例数据: import pandas as pddfTest = pd.DataFrame({ 'date': ['190225','190225','190226'],'foo': ['190225-file1_190225','190225-file2_190225','190226-fil

尝试使用一列中的值(作为字符串)来确定要从另一列中删除的内容.列的其余部分必须保持不变.

示例数据:

import pandas as pd

dfTest = pd.DataFrame({
    'date': ['190225','190225','190226'],'foo': ['190225-file1_190225','190225-file2_190225','190226-file3_190226']
})

dfTest

结果数据帧:

   |    date   |          foo
------------------------------------
0  |   190225  | 190225-file1_190225
1  |   190225  | 190225-file2_190225
2  |   190226  | 190226-file3_190226

我需要创建“ bar”列,其中“ foo”已删除所有“日期”匹配项.

我正在寻找的是:

   |    date   |         foo          |   bar
-----------------------------------------------
0  |   190225  | 190225-file1_190225  | -file1_
1  |   190225  | 190225-file2_190225  | -file2_
2  |   190226  | 190226-file3_190226  | -file3_

需要为“ foo”的每一行删除“日期”列的内容,无论它们出现在开头,中间还是结尾.

我已经尝试了一些类似下面的代码的方法,但是它不起作用.它只是复制原始列而不替换任何内容.请注意,更改正则表达式= False不会影响结果.

dfTest['bar'] = dfTest['foo'].str.replace(str(dfTest['date']),'')

#or (removing .str,gives same result):

#dfTest['bar'] = dfTest['foo'].replace(str(dfTest['date']),'')

两者都导致下表(在“ bar”中完全相同):

   |    date   |         foo          |         bar
-----------------------------------------------------------
0  |   190225  | 190225-file1_190225  | 190225-file1_190225  
1  |   190225  | 190225-file2_190225  | 190225-file2_190225  
2  |   190226  | 190226-file3_190226  | 190226-file3_190226  

如何删除日期列的内容,但保留原始数据?

最佳答案
因此,我尝试了一下,效果很好:

dfTest['bar'] = dfTest.apply(lambda row : row['foo'].replace(str(row['date']),''),axis=1)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读