簡體   English   中英

替換字符串中的最后一個字符,如果它是 dataframe 中的特定字符 Python Pandas

[英]Replace the last character in a string if it's a particular character in a dataframe Python Pandas

我有一個如下所示的 dataframe。 如果最后position中有一個字符是點,我想將其替換為字符“K”,不知道如何在替換function中添加條件

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

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

樣本數據

在此處輸入圖像描述

預期結果

在此處輸入圖像描述

使用正則表達式匹配最后一個字符:

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

如果沒有正則表達式,您可以使用.str.endswith('.').str[-1] == '.' 過濾需要替換最后一個字符的行

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

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

但問題是replace - 它會替換文本中的所有點。 它需要使用不同的方法 - 獲取沒有最后一個字符的文本.str[:-1]並添加新的字符+ "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)

編輯:

apply()類似的方法(也沒有regex

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM