更新字段

我有一个随机的给你们: 我有一张桌子有4个字段 ProductCode,LocationCode,Primary,StockInLocation

某些产品代码在表中只有1个条目,其他产品代码有2个,其中1应该是主要位置,而其他则不应该(主要是1或0)

例如:
产品代码位置代码主要库存StockInLocation
``ABC''的第1篇第1篇第5篇 BCD的版本2的版本1的版本3
CDE的版本3的版本1的版本1 CDE 5 5 DEF的版本4的版本1的版本7的版本
DEF国防部7国防部0 0 EFG的主题6的主题1的主题

我想做的是将“主要”字段重置为1,其中库存分配最高,或者表中只有1个条目,所有其他主要的字段应为0

到目前为止,我第一个查询为 更新配置 设置a。“ Primary” ='0'

现在我需要第二个查询,它将根据上述规则正确设置主字段,结果如下表所示:
产品代码位置代码主要库存StockInLocation
``ABC''的第1篇第1篇第5篇 BCD的版本2的版本1的版本3
CDE的版本3的版本0的版本CDE 3的版本5
CDE 5 5 国防军4国防军0 0 DEF 7 7 EFG的主题6的主题1的主题1的主题

不幸的是,这让我很困惑,因为我无法弄清楚如何仅更新表中只有1个条目的行(例如,产品ABC,BCD,EFG)以及库存最多的行(例如,CDE的第二行和DEF的第二行)。理论有人吗?

summaryproject 回答:更新字段

对于您使用的特定软件,我无法回答,但是我有一个通用的算法,您应该可以翻译?我使用了熊猫,任何体面的数据库都应具有相同的功能类型。

设置测试数据:

import pandas as pd
df = pd.DataFrame({
    "ProductCode" : ["ABC","BCD","CDE","DEF","EFG"],"LocationCode" : [1,2,3,5,4,7,6],"Primary" : [1,1,1],"StockInLocation" : [5,22,10,5]})

定义一个功能,该功能可在给定产品代码的各个位置输出最大库存:

max_stock = lambda x : df.loc[df["ProductCode"] == x,"StockInLocation"].max()

Primary列设置为零:

 df["Primary"] = [0]*len(df)

遍历唯一的ProductCode值列表,并将Primary设置为1,其中StockInLocation是该ProductCode的最大值:

for x in df["ProductCode"].unique():
    df.loc[(df["ProductCode"] == x) & (df["StockInLocation"] == max_stock(x)),"Primary"] = 1
本文链接:https://www.f2er.com/3057988.html

大家都在问