[英]create new df column based on grouping and conditions in PYTHON
我的 dataframe 看起来像底部,我想创建一个名为“remove”的新列,该列根据以下条件为真/假。
我只想为每个“url”保留一行,并想根据此顺序确定要保留的行:
我希望根据是否应删除新列是真还是假。
提前致谢!!
姓名 | 年龄 | 追踪 | 分数 | 尺寸 | url | url_count | |
---|---|---|---|---|---|---|---|
0 | 提米 | 10 | 格雷 | 0.982 | 41 | 目标.com | 2个 |
1个 | 切斯特 | 12 | 三氯乙酸 | 0.251 | 12 | 迈克尔斯.com | 3个 |
2个 | 崔西 | 10 | 好的 | 0.0879 | 15 | 梅西百货 com | 2个 |
3个 | 杰 | 9 | 格雷 | 0.985 | 20 | 迈克尔斯.com | 3个 |
4个 | 宇宙 | 150 | 三氯乙酸 | 0.982 | 328 | 目标.com | 2个 |
5个 | 万达 | 145 | 格雷 | 0.879 | 550 | 梅西百货 com | 2个 |
6个 | 乔根 | 500 | 好的 | 0.432 | 51 | 迈克尔斯.com | 3个 |
将sort_values
与您的排序标准一起使用,并将custom_sort
作为键重新排序您的行,第一个是排名最高的。 然后我们仅在url
列上使用duplicated
来标记除 url 的第一个实例之外的所有实例被删除:
def custom_sort(x):
if x.name == 'track':
return x.map({'gre': 0, 'tca': 0, 'oke': 1})
else:
return x
df['remove'] = df.sort_values(['url', 'score', 'track', 'size'], key = custom_sort, ascending = False).duplicated(subset = 'url')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.