我正在嘗試使用熊貓進行一些資料清理。想象一下,我有一個資料框,它有一個名為“Number”的列,包含如下資料:“1203.10”、“4221”、“3452.11”等。我想在數字前添加一個“M”,它有一個點和最后一個零。對于此示例,它將“1203.10”轉換為“M1203.10”。
我知道如何獲取一個資料框,其中包含一個點并以零結尾的數字。
假設資料框被稱為“df”。
pointzero = '[0-9] [.][0-9] [0]$'
pz = df[df.Number.str.match(pointzero)]
但是我不確定在“pz”之后如何在開頭添加“M”。我知道的唯一方法是使用 for 回圈,但我認為有更好的方法。任何建議都會很棒!
uj5u.com熱心網友回復:
您可以使用布爾索引:
pointzero = '[0-9] [.][0-9] [0]$'
m = df.Number.str.match(pointzero)
df.loc[m, 'Number'] = 'M' df.loc[m, 'Number']
或者,使用str.replace和稍微不同的正則運算式:
pointzero = '([0-9] [.][0-9] [0]$)'
df['Number'] = df['Number'].str.replace(pointzero, r'M\1', regex=True))
例子:
Number
0 M1203.10
1 4221
2 3452.11
uj5u.com熱心網友回復:
您應該制作資料框或序列示例以作為答案
例子:
s1 = pd.Series(["1203.10", "4221","3452.11"])
s1
0 M1203.10
1 4221
2 3452.11
dtype: object
str.contains boolean masking
cond1 = s1.str.contains('[0-9] [.][0-9] [0]$')
s1.mask(cond1, 'M' s1)
輸出:
0 M1203.10
1 4221
2 3452.11
dtype: object
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/529633.html
