python - 如何根据在另一个相应列中找到的值覆盖 pandas 中的列?
问题描述
我希望将类别列中的值写为列表中的预先指定的值。我的 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 列中的值。如何实际获取类别列中的值以更改为所需的类别标签?
解决方案
您可以使用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
推荐阅读
- python - 从python中的文本文件中提取信息
- vim - 如何让vim在制表符上插入相同数量的空格?
- java - Discord Bot Java - 我试图让我的机器人每隔一段时间发送一条消息,并且需要关于哪个事件侦听器最适合的帮助
- reactjs - react-table:多级子列
- html - 创建一个遵循文本框宽度的布局
- nginx - 内部 IP 地址上的连接被拒绝
- node.js - tsc 重新编译时如何热重载快递?
- python - 类型错误:描述符“绑定”需要一个“_socket.socket”对象但收到一个“元组”
- eclipse - Eclipse ide 中的 Jakarta ee Web 项目
- azure-functions - “值不能为空。(参数'记录器')” - 持久功能活动