Home > other >  Replace the last character in a string if it's a particular character in a dataframe Python Pan
Replace the last character in a string if it's a particular character in a dataframe Python Pan

Time:10-07

I have a dataframe like below. If there's a character in the last position is a dot, I want to replace it as a character "K" , not sure how to add the condition in the replace function

df = pd.DataFrame({ 'Mix':['572.7.','44.44','99']})

df['Mix'].str.replace('.','K',regex=False)

Sample data

enter image description here

expected result

enter image description here

CodePudding user response:

Using regex to match the last character:

df['Mix'].str.replace('\.$','K',regex=True)

CodePudding user response:

Without regex you could use .str.endswith('.') or .str[-1] == '.' to filter rows which need to replace last char

mask = df['Mix'].str.endswith('.')
#mask = (df['Mix'].str[-1] == '.')

df['Mix'][mask] = df['Mix'][mask]....

But problem is replace - it would replace all dots in text. It would need to use different method - get text without last char .str[:-1] and add new char "K"

df['Mix'][mask] = df['Mix'][mask].str[:-1]   'K'

import pandas as pd

df = pd.DataFrame({ 'Mix':['572.7.','44.44','99']})

mask = df['Mix'].str.endswith('.')
#mask = (df['Mix'].str[-1] == '.')

df['Mix'][mask] = df['Mix'][mask].str[:-1]   'K'

print(df)

EDIT:

Similar method with apply() (also without regex)

def modify(text):
    if text.endswith('.'):
        text = text[:-1]   'K'
    return text

df['Mix'] = df['Mix'].apply(modify)
  • Related