[英]pandas: get the exact corresponding value with the corresponding index based on a value in another column
[英]How to write over a column in pandas based on the value found in another corresponding column?
我希望將類別列中的值寫為列表中的預先指定的值。 我的DataFrame的頭部是這樣的:
Product Category
0 Macbook Pro Laptop -
1 LG Washing Machine -
2 USB-C Charging Cable -
3 27in FHD Monitor -
4 USB-C Charging Cable -
5 AA Batteries (4-pack) -
6 USB-C Charging Cable -
7 USB-C Charging Cable -
8 Bose SoundSport Headphones -
9 AAA Batteries (4-pack) -
10 USB-C Charging Cable -
11 ThinkPad Laptop -
12 AA Batteries (4-pack) -
13 AAA Batteries (4-pack) -
14 USB-C Charging Cable -
我想用列表中預先指定的值替換 Category 列,如下所示:
con_elec = ['20in Monitor',
'27in 4K Gaming Monitor',
'27in FHD Monitor',
'34in Ultrawide Monitor',
'Flatscreen TV',
'Google Phone',
'Macbook Pro Laptop',
'ThinkPad Laptop',
'Vareebadd Phone',
'iPhone']
elec_acc = ['AA Batteries (4-pack)',
'AAA Batteries (4-pack)',
'Apple Airpods Headphones',
'Bose SoundSport Headphones',
'Lightning Charging Cable',
'USB-C Charging Cable',
'Wired Headphones']
house_app = ['LG Dryer',
'LG Washing Machine']
我想測試一下 Product 列中的值是否在以下列表之一中,然后將 Category 列中的“-”替換為產品所屬的相應類別。
我嘗試使用以下 if 語句:
for product in df['Product']:
if product in con_elec == True:
df['Category'] = 'Consumer Electronics'
elif product in elec_acc == True:
df['Category'] = 'Electronic Accessories'
elif product in house_app == True:
df['Category'] = 'Household Appliances'
此代碼運行無誤,但不會更改 DataFrame 的 Category 列中的值。 我如何 go 關於實際獲取類別列中的值以更改為所需的類別 label?
您可以使用pandas.Series.map
:
d = {}
for v, lst in [('Consumer Electronics', con_elec), ('Electronic Accessories', elec_acc), ('Household Appliances', house_app)]:
for vv in lst:
d[vv] = v
df['Category'] = df['Product'].map(d)
print(df)
印刷:
Product Category
0 Macbook Pro Laptop Consumer Electronics
1 LG Washing Machine Household Appliances
2 USB-C Charging Cable Electronic Accessories
3 27in FHD Monitor Consumer Electronics
4 USB-C Charging Cable Electronic Accessories
5 AA Batteries (4-pack) Electronic Accessories
6 USB-C Charging Cable Electronic Accessories
7 USB-C Charging Cable Electronic Accessories
8 Bose SoundSport Headphones Electronic Accessories
9 AAA Batteries (4-pack) Electronic Accessories
10 USB-C Charging Cable Electronic Accessories
11 ThinkPad Laptop Consumer Electronics
12 AA Batteries (4-pack) Electronic Accessories
13 AAA Batteries (4-pack) Electronic Accessories
14 USB-C Charging Cable Electronic Accessories
您可以創建一個自定義 function 並將map
與lambda
一起使用。 還請記住,當您in
== True
中使用時誇大其詞,您可以避免使用它:
def replacers(x):
if x in con_elec:
return 'Consumer Electronics'
elif x in elec_acc:
return 'Electronic Accessories'
elif x in house_app:
return 'Household Appliances'
接着:
df['Category'] = df['Category'].map(lambda x: replacers(x))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.