簡體   English   中英

僅替換替換第一個參數

[英]Replace only replacing the 1st argument

我有以下代碼:

df['Price'] = df['Price'].replace(regex={'$': 1, '$$': 2, '$$$': 3})

df['Price'].fillna(0)

但即使一行有 "$$" 或 "$$$" 它仍然用 1.0.0 替換它。

我怎樣才能使它適當地用 1 替換 $,用 2 替換 $$,用 3 替換 $$$?

df.Price.map({'$': 1, '$$': 2, '$$$': 3})

假設您真的想使用正則表達式匹配而不是簡單的map ,您需要修復兩件事。

1- 轉義$表示正則表達式中字符串的結尾

2-將模式以長度相反的順序放入字典中,以便在 $$ 之前和 $ 之前評估 $$$ ( {r'\$\$\$': 3, r'\$\$': 2, r'\$': 1} )

例子:

df = pd.DataFrame({'price': ['abc $', 'def $$', '$$$']})
df['new'] = df['price'].replace(regex={r'\$\$\$': 3, r'\$\$': 2, r'\$': 1})

Output:

    price  new
0   abc $    1
1  def $$    2
2     $$$    3

暫無
暫無

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

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