replace string in pandas dataframe

2020-02-14 10:25发布

问题:

I have a dataframe with multiple columns. I want to look at one column and if any of the strings in the column contain @, I want to replace them with another string. How would I go about doing this?

回答1:

A dataframe in pandas is composed of columns which are series - Panda docs link

I'm going to use regex, because it's useful and everyone needs practice, myself included! Panda docs for text manipulation

Note the str.replace. The regex string you want is this (it worked for me): '.*@+.*' which says "any character (.) zero or more times (*), followed by an @ 1 or more times (+) followed by any character (.) zero or more times (*)

df['column'] = df['column'].str.replace('.*@+.*', 'replacement')

Should work, where 'replacement' is whatever string you want to put in.



回答2:

My suggestion:

df['col'] = ['new string' if '@' in x else x for x in df['col']]

not sure which is faster.



回答3:

Assuming you called your dataframe df, you can do:

pd.DataFrame(map(lambda col: map(lambda x: 'anotherString' if '@' in x else x, df[col]), df.columns)).transpose()