I have a list of “states” from which I have to iterate:
states = ['antioquia', 'boyaca', 'cordoba', 'choco']
I have to iterate one column in a pandas df to replace or cut the string where the state text is found, so I try:
df_copy['joined'].apply([(lambda x: x.replace(x,x[:-len(j)]) if x.endswith(j) and len(j) != 0 else x) for j in states])
And the result is:
Result wanted:
joined
column is the input and the desired output is p_joined
column
If it’s possible also to find the state not only in the end of the string but check if the string contains it and replace it
Thanks in advance for your help.
Advertisement
Answer
This will do what your question asks:
df_copy['p_joined'] = df_copy.joined.str.replace('(' + '|'.join(states) + ')$', '')
Output:
joined p_joined 0 caldasantioquia caldas 1 santafeantioquia santafe 2 medelinantioquiamedelinantioquia medelinantioquiamedelin 3 yarumalantioquia yarumal 4 medelinantioquiamedelinantioquia medelinantioquiamedelin