python - 根据参考列表集分配熊猫列
问题描述
目标是将列main_frame
值分配给参考列表。
目前,操作实现如下:
import pandas as pd
watchlist_ref = [['A1','AA2','A3'],
['B1','BC2','B3']]
upper_ref = ['A','B']
df = pd.DataFrame ({'tw':['A1','AA2','A3','B1','BC2','B3']})
for ls_str, ws in zip(watchlist_ref, upper_ref):
df.loc[(df['tw'].str.contains('|'.join(ls_str), case=False)), 'main_frame'] = ws
给出以下输出:
tw main_frame
0 A1 A
1 AA2 A
2 A3 A
3 B1 B
4 BC2 B
5 B3 B
但是,有什么办法可以避免使用for-loop
?
解决方案
explode
然后尝试map
s = pd.Series(watchlist_ref,index=upper_ref).explode()
df['new'] = df.tw.map(dict(zip(s,s.index)))
df
Out[175]:
tw new
0 A1 A
1 AA2 A
2 A3 A
3 B1 B
4 BC2 B
5 B3 B
推荐阅读
- angular - 当 Angular 7 的 Microsoft Edge 中的值更改时,绑定无法立即工作
- javascript - 在 Vue 方法上使用 promise 和 await 时出现问题
- laravel-5 - Laravel 5.7 在同一页面上使用登录和注册表单时如何区分错误消息?
- node.js - 节点:来自不同账户的 AWS S3 sdk 同步
- java - 从插入的 DataSet 中获取主键以链接到其他插入
- android - 我的应用程序以编程方式更改本地语言,但通知以设备语言显示其消息
- python - 如何在python中使用while循环和范围?
- php - 修改 Laravel Model 的属性值
- java - 自动装配变量的方法为空
- node.js - 通过 http.get 将正文添加到字符串