繁体   English   中英

根据 PYTHON 中的分组和条件创建新的 df 列

[英]create new df column based on grouping and conditions in PYTHON

我的 dataframe 看起来像底部,我想创建一个名为“remove”的新列,该列根据以下条件为真/假。

我只想为每个“url”保留一行,并想根据此顺序确定要保留的行:

  • 保留得分较高的那个
  • 如果分数相同,则跟踪“gre”和“tca”的 go 优于“oke”
  • 如果它们在轨道上相等,则 go 到“大小”并取较大的

我希望根据是否应删除新列是真还是假。

提前致谢!!

姓名 年龄 追踪 分数 尺寸 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM