I’m working on a huge file that has names in columns that contain extraneous values (like the “|” key) that I want to remove, but for some reason my str.replace function only seems to apply to some rows in the column.
My column in the dataframe summary looks something like this:
Labels test|test 1 test 2 test 3 test|test 4 test|test 5 test 6
As you can see, some columns are already how i want them to be, only containing the name “test #”, but some have “test|” in front, which I want removed.
My function to remove them is like this:
correction = summary["Labels"].str.replace('test|', '')
It seems to work for most of the values, but when I check for pipes (“|”) in the dataframe (once i merged correction with summary), it says it finds 9330 of them:
found = summary[summary['Labels'].str.contains('|',regex=False)]
print(len(found))
print(found['Labels'].value_counts())
Results
9330
test|test-667 59
test|test-765 40
test|test-1810 39
test|test-685 36
test|test-1077 33
..
Does anyone know why this is, and how i can fix it?
Advertisement
Answer
You were on the right track. Replace raw string as follows
summary['Labels'] = summary['Labels'].str.replace(r'test|','', regex=True) Labels 0 test 1 1 test 2 2 test 4