python - 保留列开始范围内得分最高的行
问题描述
我想将“分数”值最高的行保留在起始值列的 3 个位置内。我有一个如下所示的数据框:
data = {'id':['id1', 'id2', 'id3', 'id4', 'id5', 'id6'],
'start':[1,12,11,2,20,3],
'score':[3,1,8,2,5,9]}
df = pd.DataFrame(data, columns=['id', 'start', 'score'])
df = df.sort_values(by='start')
期望的输出:
data = {'id':['id3', 'id5', 'id6'],
'start':[11,20,3],
'score':[8,5,9]}
output = pd.DataFrame(data, columns=['id', 'start', 'score'])
output = output.sort_values(by='start')
因为 id1、id4 和 id6 的起始值正负 3,所以我们保留得分最高的行 (id6)。保留 id3 的 id2 和 id3 具有相同的原则。id5 是唯一的,应该保留。
解决方案
你想要这个吗?-
bin = range(df['start'].min(), df['start'].max()+3, 3)
cut = pd.cut(df['start'], bins=bin, include_lowest= True)
def test(x):
return x.sort_values('score').tail(1)
df = df.groupby(cut).apply(test).reset_index(drop=True)
推荐阅读
- rpm - 为 Libreoffice 重建 RHEL 源代码包 (SRPM) - 构建依赖项是否未打包?
- image-processing - 鱼眼镜头和相机校准的优势
- java - 无法通过 androidTestImplementation 下载外部库“androidx.test”
- google-apps-script - google.script.run.function 不适用于 Chrome V8
- python - 将数据帧的一行与其他数据帧的行进行比较?
- javascript - 如何读取文件夹内的文件夹并从每个文件夹中获取 index.html 并作为列表 (li) 标记中的链接传递
- apache-kafka-streams - Kafka Streams KGroupedTable 恢复
- php - 在加载图像时获取图像选择的完整路径
- angular - Angular 9:即使在分配之后,对象也会在 ngOinit 中得到 udefined
- excel - 如何在Excel中获取第n个非空白列