首页 > 解决方案 > 根据参考列表集分配熊猫列

问题描述

目标是将列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?

标签: pythonpandasassign

解决方案


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

推荐阅读