[英]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.