如何在lambda python中使用for循环和if?

如何在lambda python中使用for循环和if?,python,pandas,dataframe,dictionary,lambda,Python,Pandas,Dataframe,Dictionary,Lambda,我有一个数据帧df,它有一个列标记。列标记的每个元素都是字典的列表,如下所示: [ { “id”:“leena123”, “姓名”:“利纳肖”, “slug”:空, “类型”:“用户标签”, “endIndex”:0, “startIndex”:0 }, { “id”:“1234”, “名称”:“abc有限公司”, “slug”:“5678”, “类型”:“StockTag”, “endIndex”:0, “startIndex”:0 } ] 列表可以有任意数量的元素 样本数据集: 0 s

我有一个数据帧df,它有一个列标记。列标记的每个元素都是字典的列表,如下所示:

[
{
“id”:“leena123”,
“姓名”:“利纳肖”,
“slug”:空,
“类型”:“用户标签”,
“endIndex”:0,
“startIndex”:0
},
{
“id”:“1234”,
“名称”:“abc有限公司”,
“slug”:“5678”,
“类型”:“StockTag”,
“endIndex”:0,
“startIndex”:0
}
]
列表可以有任意数量的元素

样本数据集:

 0  some_data  [{'id': 'leena123', 'name': 'leenaShaw', 'slug': None, 'type...
 1  some data  [{'id': '6', 'name': 'new', 'slug': None, 'type...
我想从标记列创建一个所有id的列表,其中类型用户标记

样本输出:

我正在尝试这样做:
list(df['tags'].apply(lambda x:d['name']如果有的话(d['type']=='UserTag'表示x中的d))

但它不起作用。请对此给予帮助。

df一起使用。应用

df['id'] = df.tags.apply(lambda x: [i['id'] for i in x if i.get('type') == 'UserTag'])
id
列创建
列表

import itertools

l = df['id'].values.tolist()
output_id_list = list(itertools.chain(*l))
如果要从
df
中删除
id
列,请执行以下操作:

df.drop('id', inplace=True)

请将数据帧的示例与预期输出共享。这将使用usertags创建一个新列。我需要一个包含用户标记的列表,如下所示
['leena123','saily639,…]
是否要替换现有的
标记
列?否。我不添加新列或替换现有标记。我想要一个
id
的列表,其中
type
userTag
@dipanjana,请检查我的更新答案。