从字典中的列列表中获取值



我想提取Value,其中Name=Title的字典中的键。

列名:title

输入:

name     title
1        []  
2        []
3        [{'Field': '4', 'Name': 'Title', 'Value': '32ff5a'}]
4        [{'Field': '6', 'Name': 'Company', 'Value': 'XYZ'}, {'Field': '1', 'Name': 'Title', 'Value': '0ac3c3327'}]

输出:

name     title
1         
2        
3        32ff5a
4        0ac3c3327

我试着:

df.title = df['title'].apply(lambda x: x.get('Value')[0])

但是我得到了一个错误:

AttributeError: 'str' object has no attribute 'get'

尝试applylambda和生成器:

df['title'] = df['title'].apply(lambda x: next((y['Value'] for y in x if y['Name'] == 'Title'), ''))

>>> df
name      title
0     1           
1     2           
2     3     32ff5a
3     4  0ac3c3327
>>> 

编辑:

使用:

df['title'] = df['title'].apply(lambda x: next((y.get('Value', '') for y in x if y.get('Name') == 'Title'), ''))

最新更新