从数组中的一组字符串中提取 ID 和值

Ces*_*sar 1 python pandas

我在解决以下问题时遇到困难。

我有一个df['subjects']有字符串列表的熊猫。

df['subjects'].head(3) = 

0['B:1187', 'B:1188', 'P:123456', 'B:62']
1['G:1', 'G:1C', 'G:21', 'G:3', 'G:30']
2['B:71', 'E:D', 'G:6J', 'P:125467', 'B:1296', 'P:789456']
Run Code Online (Sandbox Code Playgroud)

基本上我需要的是以下内容..

df['subjects'] = 
123456
None
125467,789456
Run Code Online (Sandbox Code Playgroud)

我只需要返回具有的值 P:XXXXX

我试过使用 for 循环,但我一直得到错误的值。

WeN*_*Ben 5

我们可以explode使用startswith+ splitbeforegroupby

s=df['subjects'].explode()
s=s[s.str.startswith('P:')].str.split(':').str[-1].groupby(level=0).agg(list).reindex(df.index)
0            [123456]
1                 NaN
2    [125467, 789456]
Name: subjects, dtype: object
df['new']=s
Run Code Online (Sandbox Code Playgroud)