更新字段

问题描述 投票:-1回答:1

我有一个随机的给你们:我有一张桌子有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
python max paradox
1个回答
0
投票

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

设置测试数据:

© www.soinside.com 2019 - 2024. All rights reserved.