簡體   English   中英

在 pandas 的列表中添加具有匹配值的新列

[英]Add a new column with matching values in a list in pandas

我有一個 dataframe 例如:

the_list =['LjHH','Lhy_kd','Ljk']

COL1 COL2 
A    ADJJDUD878_Lhy_kd
B    Y0_0099JJ_Ljk
C    YTUUDBBDHHD
D    POL0990E_LjHH'

我想添加一個新的COL3列,如果在COL2中我與the_list中的值匹配,我在該列中添加the_list的匹配元素。

預期結果;

COL1 COL2               COL3
A    ADJJDUD878_Lhy_kd  Lhy_kd
B    Y0_0099JJ_2_Ljk    Ljk    
C    YTUUDBBDHHD        NA
D    POL0990E_LjHH'     LjHH

對於僅獲取第一個匹配值,請使用Series.str.extract與列表的連接值| 對於正則表達式or

the_list =['LjHH','Lhy_kd','Ljk']

df['COL3'] = df['COL2'].str.extract(f'({"|".join(the_list)})', expand=False)
print (df)
  COL1               COL2    COL3
0    A  ADJJDUD878_Lhy_kd  Lhy_kd
1    B      Y0_0099JJ_Ljk     Ljk
2    C        YTUUDBBDHHD     NaN
3    D     POL0990E_LjHH'    LjHH

要獲取所有匹配的值(如果可能有多個值),請使用Series.str.findallSeries.str.join ,最后將空字符串替換為NaN

the_list =['LjHH','Lhy_kd','Ljk']

df['COL3']=df['COL2'].str.findall(f'{"|".join(the_list)}').str.join(',').replace('',np.nan)
print (df)
  COL1               COL2    COL3
0    A  ADJJDUD878_Lhy_kd  Lhy_kd
1    B      Y0_0099JJ_Ljk     Ljk
2    C        YTUUDBBDHHD     NaN
3    D     POL0990E_LjHH'    LjHH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM