尝试使用一列中的值(作为字符串)来确定从另一列中删除的内容。列的其余部分必须保持不变。在
示例数据:
import pandas as pd
dfTest = pd.DataFrame({
'date': ['190225', '190225', '190226'],
'foo': ['190225-file1_190225', '190225-file2_190225', '190226-file3_190226']
})
dfTest
结果数据帧:
^{pr2}$我需要创建“bar”列,其中“foo”删除了所有“date”匹配项。在
我要找的是:
| date | foo | bar
-----------------------------------------------
0 | 190225 | 190225-file1_190225 | -file1_
1 | 190225 | 190225-file2_190225 | -file2_
2 | 190226 | 190226-file3_190226 | -file3_
“date”列的内容,无论它们出现在“foo”的每一行的开头、中间还是结尾,都需要删除
我尝试过一些类似下面的代码,但它不起作用。只复制原始列而不替换它。请注意,更改regex=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
如何删除日期列的内容,但保留原始数据?在
埃迪: 我注意到,在lambda上使用replace时,它并不像预期的那样工作,所以我将其拆分成一个函数。在
所以,我试了一下,效果很好:
相关问题 更多 >
编程相关推荐