我有一个pandas dataframe
包含列split_categories中的列表:
df.head()
album_id categories split_categories
0 66562 480.494 [480, 494]
1 114582 128 [128]
2 4846 5 [5]
3 1709 9 [9]
4 59239 105.104 [105, 104]
我想选择所有行,其中至少一个类别在特定列表中[480,9,104]。
预期产量:
album_id categories split_categories
0 66562 480.494 [480, 494]
3 1709 9 [9]
4 59239 105.104 [105, 104]
我设法做到这一点apply
:
def match_categories(row):
selected_categories = [480, 9, 104]
result = [int(i) for i in row['split_categories'] if i in selected_categories]
return result
df['matched_categories'] = df.apply(match_categories, axis=1)
但是这段代码在生产环境中运行,并且这种方式花费的时间太长(我对包含列表的多列运行它)
有没有办法运行类似的东西:
df[~(df['split_categories'].anyvalue.isin([480, 9, 104]))]
谢谢
您可以展开内部列表,并检查any
内部列表中的项目是否包含在[480, 9, 104]
:
l = [480, 9, 104]
df[df.categories.str.split('.', expand=True).isin(map(str,l)).any(axis=1)]
album_id categories split_categories
0 66562 480.494 [480,494]
3 1709 9.000 [9]
4 59239 105.104 [105,104]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句