python - 熊猫分组选择最接近的数字
问题描述
假设我有以下数据框:
d = {'store': ['s1', 's1', 's2', 's2',], 'code': ['a', 'b', 'a', 'b'], 'range': [1, 2, 3,2]}
df = pd.DataFrame(data=d)
print(df)
store code range
0 s1 a 1
1 s1 b 2
3 s2 a 3
4 s2 b 2
对于每个商店,我想选择范围最接近所选值 n 的代码,例如让我们说 n=3
结果如下:
store code range
0 s1 b 2
1 s2 a 3
需要注意的一些小细节,在实际数据集中范围不是一个整数,而是一个双精度数,每个存储有三个代码(a,b,c),为了简单起见,这里只显示两个。
解决方案
尝试使用on减去该n
值并获取每个商店range
的值的索引:min
groupby idxmin
df['store']
n = 3
new_df = (
df.loc[(df['range'] - n).abs().groupby(df['store']).idxmin()]
.reset_index(drop=True)
)
store code range
0 s1 b 2
1 s2 a 3
推荐阅读
- amazon-web-services - 如何使用海王星导出
- javascript - onYouTubeIframeAPIReady 事件未在第二个选项卡中触发,但在第一个选项卡中工作正常
- flutter - 如何使用 crossAxisAlignment 中心覆盖父列中使用的子文本对齐方式?
- reactjs - 如何在反应中声明“异步”功能组件?
- visual-studio-code - Visual Studio Code 扩展不起作用
- flutter - Flutter:无法从基于持久底部导航栏的视图转到登录视图
- elasticsearch - 忽略 Elasticsearch 映射
- php - 访客详细信息(http 用户代理)适用于 Android 版本 10 及更高版本
- spring - Spring升级:Spring集成JMS java.lang.AbstractMethodError:org.springframework.integration.config.xml.AbstractRouterParser.parseRouter
- google-cloud-platform - 负载测试时需要帮助进行登录身份验证oauth2.0