如何解决根据参考列表集分配熊猫列
目标是将列 main_frame
值分配给引用列表。
目前实现如下操作:
import pandas as pd
watchlist_ref = [['A1','AA2','A3'],['B1','BC2','B3']]
upper_ref = ['A','B']
df = pd.DataFrame ({'tw':['A1','A3','B1','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
,
您可以创建一个包含监视列表值作为键和引用作为值的字典,然后使用 replace
和 regex=True
创建新列:
d = {'|'.join(ls_str): ws for ls_str,ws in zip(watchlist_ref,upper_ref)}
df['main_frame'] = df['tw'].replace(d,regex=True)
结果:
tw main_frame
0 A1 A
1 AA2 A
2 A3 A
3 B1 B
4 BC2 B
5 B3 B
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。