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
expected result
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)