python - 比较其他熊猫数据框每一行的值
问题描述
我有一个简单的熊猫数据框,它有一个范围列。
map_dict = { 'range' : [50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 40000, 80000, 120000],
'sample' : [1000, 1000, 1000, 1000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000] }
pd.DataFrame.from_dict(map_dict)
我有一个值,可以说 x 现在我想比较列范围内每一行的 x,例如,如果 x> 200 & x< 500,则将 x 与列样本中的匹配值相加。
另一个例子,如果 x = 4000,因为在这种情况下,范围列中的 x> 2000 & x< 5000。所以列样本中的匹配值将是 2000,所以我将与 2000 相加
output:6000
如何比较其他数据框中的值并在下一列中获取匹配值?
解决方案
我相信你需要减去值,通过更大的喜欢进行比较0
并获得sample
列的第一个匹配值:
x = 4000
y = next(iter(df.loc[df['range'].sub(x) > 0, 'sample']))
#alternative for first matched value
#y = df.loc[ y > 0, 'sample'].to_numpy()[0]
print (y)
2000
print (x + y)
6000
推荐阅读
- go - 编译协议缓冲区:缺少输出指令
- gulp - 什么是 gulp 中的 rev-manifest.json 文件?
- botframework - 如何在 Microsoft Teams for Microsoft Bot Framework 中检测用户的语言?
- angular - 以角度 7 显示来自 postgresql 服务器的图像
- xml - Ant 项目没有“默认”属性,有可能吗?
- html - Css从div中隐藏红线(是一个跨度)?
- excel - 为什么带有 cell.value 的宏停止工作并返回错误 2015?
- sql - 如何在Angular 2的数据库中存储用户信息?
- azure - 在 Azure 批处理池中使用支持 GPU 容器的 VM 时,节点进入不可用状态
- sql - 即使存在 NULL 值,SQL Count NULL 值也为 0