我有一份以订阅方式出售的产品清单。价格因地区而异(约15个地区)。我正在努力寻找下一个最接近当天价格的产品(不是当天最便宜的)。我的数据是这样的
data = [['29/10/20', 400, 300, 2, 1],
['29/10/20', 250, 400, 1, 2],
['29/10/20', 600, 600, 3, 3],
['30/10/20', 800, 500, 3, 2]
['30/10/20', 200, 800, 1, 3],
['30/10/20', 550, 300, 2, 1]
df = pd.DataFrame(data, columns = ['date', 'east price', 'west price', 'east position', 'west position'])
我希望我的输出看起来像
date east_price nearest_east_price west_price nearest_west_price
29/10/20 400 250 300 300
29/10/20 250 250 400 300
29/10/20 600 400 600 400
30/10/20 800 550 500 300
30/10/20 250 250 800 500
30/10/20 550 250 300 300
我不确定是否要根据现有的职位信息进行此操作,或者是否有其他方法进行此操作。我整天都在忙这个。我还有一个问题,那就是当天最便宜的产品,我希望它能返回它的价值。有人能帮忙吗?我是编程新手,所以可能会错过一些显而易见的东西
编辑:(2020年7月2日)。OP需要输出,因此如果存在重复的价格,则最近的价格不能相同
请参阅下面添加了
np.where
和bfill()
的新解决方案输出:
(旧答案)
只需使用
.sort_values()
进行排序,并使用.shift
与下一行进行比较解决方案#1
解决方案#2-更好的是,如果您有许多列的模式与其列名相似,您可以基于相似的名称在列中循环,并以这种方式执行:
解决方案#3:整合解决方案#2:
输出:
相关问题 更多 >
编程相关推荐