我无法就您所使用的特定软件回答问题,但是我有一个应翻译的通用算法?我使用了熊猫,任何体面的数据库都应具有相同类型的功能。
设置测试数据:
我有一个随机的给你们:我有一张桌子有4个字段ProductCode,LocationCode,Primary,StockInLocation
某些产品代码在表中只有1个条目,其他产品代码有2个,其中1应该是主要位置,而另一个则不应该(主要是1或0)
例如:产品代码位置代码主要库存(ABC)(1)1(ABC)5BCD的版本2的版本1的版本3CDE的版本3的版本1的版本5CDE的版本5的版本0的版本22DEF的版本4的版本1的版本7DEF的版本7 DEF的版本0的版本10的版本EFG(英特网)6月1日1 5
我想做的是将“主要”字段重置为1,其中库存分配最高,或者表中只有1个条目,所有其他主要的字段应为0
到目前为止,我第一个查询为更新配置设置a。“ Primary” ='0'
现在我需要第二个查询,它将根据上述规则正确设置主字段,结果如下表所示:产品代码位置代码主要库存(ABC)(1)1(ABC)5BCD的版本2的版本1的版本3CDE的版本3的版本0的版本5CDE 5 5DEF的版本4的版本0的版本DEF的版本4国防军7国防军1国防军10国防军EFG(英特网)6月1日1 5
[不幸的是,这让我很困惑,因为我无法弄清楚如何仅更新表中只有1个条目的行(例如,产品ABC,BCD,EFG)以及库存最多的行( EG。CDE第二行和DEF第二行)。理论有人吗?
我有一个随机的给你们:我有一个包含4个字段的表ProductCode,LocationCode,Primary,StockInLocation,某些产品代码在表中只有1个条目,其他产品代码有2个,其中1个应该是...]]] >>
我无法就您所使用的特定软件回答问题,但是我有一个应翻译的通用算法?我使用了熊猫,任何体面的数据库都应具有相同类型的功能。
设置测试数据:
import pandas as pd df = pd.DataFrame({ "ProductCode" : ["ABC","BCD", "CDE", "CDE", "DEF", "DEF", "EFG"], "LocationCode" : [1, 2, 3, 5, 4, 7, 6], "Primary" : [1, 1, 1, 0, 1, 0, 1], "StockInLocation" : [5, 3, 5, 22, 7, 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
我无法就您所使用的特定软件回答问题,但是我有一个应翻译的通用算法?我使用了熊猫,任何体面的数据库都应具有相同类型的功能。
设置测试数据: