PythonPandas用dict替换一列中的多个值

axzmvihb  于 2022-11-05  发布在  Python
关注(0)|答案(1)|浏览(133)

我有下面的df作为例子
| 产品型号|产品类型|标价|
| - -|- -|- -|
| 小行星01478|电子线路控制|119.00英镑|
| 小行星01479|绿色|159.00英镑|
| 小行星01514|电源|100英镑|
| 小行星01617|电子线路控制|119.00英镑|
| 小行星01819|电子照明-绿色-电源|300.00英镑|
| 小行星01819|电子照明-绿色-电源|300.00英镑|
我正在尝试使用字典更改“产品类型”列中的多个值
这是我的代码:

df['Product Type'] = df['Product Type'].str.replace('ELC', 'Electric')
df['Product Type'] = df['Product Type'].str.replace('GRN', 'Green')
df['Product Type'] = df['Product Type'].str.replace('PWR', 'Power Supply')

当我使用这个它改变值和工程,甚至为ELC - GRN - PWR
然而,当我尝试使用dict方法只是为了提高代码的可读性,使它更简单,而不是加载str.replace行。

dict = {
    'ELC' : 'Electric', 
    'GRN' : 'Green', 
    'PWR': 'Power Supply', 
    '-' : ' '}

它仅将单个ELC更改为电动,将GRN更改为绿色,但不会将ELC - GRN - PWR更改为电动-绿色-电源。
我能问一下为什么会发生这种情况吗?解决办法是什么?
我看过许多不同的方法在堆栈,但似乎没有有效的工作。
感谢您发送编修。

8ulbf1ek

8ulbf1ek1#

您可以在df.Series.replace内部使用regex(不使用str):

df['Product Type'] = df['Product Type'].replace(dict, regex=True)

相关问题