如何在lambda python中使用for循环和if?
我有一个数据帧df,它有一个列标记。列标记的每个元素都是字典的列表,如下所示:如何在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
[
{
“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,请检查我的更新答案。