gpt4 book ai didi

python - 如何有效地比较具有相同 x 和 y 值的所有行的 z 值?

转载 作者:行者123 更新时间:2023-12-01 00:49:45 25 4
gpt4 key购买 nike

我有一个 pandas 数据框,其中包含 x、y、z 和 b 列。对于每个 x 和 y 对(描述像素),我想比较 z 值,如果所有 z 值仅在特定阈值(例如 0.3)内不同,则将所有像素的 b 设置为 true。如果某些像素的 z 值差异超过阈值,则仅将 z 值最小(阈值内)的像素设置 b 为 true,而将其他像素(高于阈值)设置 b 为 false。

我想,我可能会使用pandas的groupby函数,比如

df[['x','y','z','b']].groupby(['x','y'])

获取具有相同 x 和 y 的所有集合。但是我如何应用函数来执行即将进行的比较等等?或者有一些 numpy 函数可以做到这一点吗?

示例:

我有下表(作为数据框)

   x         y              z-----------------------------1124       922      78.6014231124       922      78.6024611124       922      95.1405861123       922      78.6035441123       922      78.6044001123       922      78.6054491123       922      78.6063951123       922      87.2472551123       922      87.2347661123       922      78.6091171123       922      78.610156...

我想要的,看起来像

   x         y              z      b------------------------------------1124       922      78.601423   true1124       922      78.602461   true1124       922      95.140586  false1123       922      78.603544   true1123       922      78.604400   true1123       922      78.605449   true1123       922      78.606395   true1123       922      87.247255  false1123       922      87.234766  false1123       922      78.609117   true1123       922      78.610156   true...

最佳答案

IIUC,使用:

s=df.groupby(['x','y'])['z'].transform('min')
#if you need subtract based on the first value and not min use :
#s=df.groupby(['x','y'])['z'].transform('first')
df=df.assign(b=df.z.eq(s)|(df['z']-s).le(0.3))
<小时/>
       x      y          z      b
0 1124 922.0 78.601423 True
1 1124 922.0 78.602461 True
2 1124 922.0 95.140586 False
3 1123 922.0 78.603544 True
4 1123 922.0 78.604400 True
5 1123 922.0 78.605449 True
6 1123 922.0 78.606395 True
7 1123 922.0 87.247255 False
8 1123 922.0 87.234766 False
9 1123 922.0 78.609117 True
10 1123 922.0 78.610156 True

关于python - 如何有效地比较具有相同 x 和 y 值的所有行的 z 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56663650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com