Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 迭代字典并使用lambda函数计算值_Python_Pandas_Dataframe_Lambda - Fatal编程技术网

Python 迭代字典并使用lambda函数计算值

Python 迭代字典并使用lambda函数计算值,python,pandas,dataframe,lambda,Python,Pandas,Dataframe,Lambda,我试图迭代df2,将est7wks值与字典中相应的平均值相乘。如果产品线是一条全局产品线,则返回预测值 乘积_平均={ “杂货店”:1.94, “饮料”:1.57, 电话:2.08 } df2=pd.DataFrame[ { “说明”:“玉米片”, “部门”:“杂货店”, “预计7周”:2043年, “产品线”:“全球线”, “预测”:“待定” }, { ‘描述’:‘可口可乐’, “部门”:“饮料”, “预计7周”:10500, “产品线”:“全球线”, “预测”:“待定” }, { “说明”:

我试图迭代df2,将est7wks值与字典中相应的平均值相乘。如果产品线是一条全局产品线,则返回预测值

乘积_平均={ “杂货店”:1.94, “饮料”:1.57, 电话:2.08 } df2=pd.DataFrame[ { “说明”:“玉米片”, “部门”:“杂货店”, “预计7周”:2043年, “产品线”:“全球线”, “预测”:“待定” }, { ‘描述’:‘可口可乐’, “部门”:“饮料”, “预计7周”:10500, “产品线”:“全球线”, “预测”:“待定” }, { “说明”:“iphone 11”, "部门":"电话",, “预计7周”:140, “产品线”:“钻石线”, “预测”:“待定” } ] 我的密码

def部门产品是指,部门,预计7周,产品线,预测: 对于产品中的k,v表示: 如果部门=k,产品线=菱形线: 返回est_7周*v 其他: 回报预测 df['forecast']=df.apply lambda x:截面图 我是说, x[“部门”], x['est_7wks'], x[“产品线”], x[“预测”] , 轴=1 它可以工作,但只返回字典中第一个项目的变量。其他部门,如饮料和电话,都没有价值。

你可以通过以下方式实现这一点。使用这种方法,您不需要迭代数据帧中的行,这将快得多

为菱形线制作布尔掩码 钻石蒙版=df2[产品线].eqDiamond线 从product_mean创建条件列表 条件=[diamond_mask&df2[部门] 从product_mean创建选项列表 选择=[df2[est_7wks]*v代表k,v代表产品的平均值项目] 使用np.select,默认值为forecast df2[res]=np.selectcondlist=conditions,choicelist=choices,default=df2[forecast] 输出:

Out[14]:描述部门预计7周产品线预测结果 0玉米片杂货店2043全球生产线待定 1可口可乐饮料10500全球生产线待定 2部iphone 11手机140钻石线待定291.2 部门职能应为:

def部门产品是指,部门,预计7周,产品线,预测: 如果产品线=‘全球线’和产品线中的部门表示: 返回est_7周*产品是指[部门] 其他: 回报预测
产品是什么意思?你的qn不清楚你想做什么do@SerialLazerproduct_mean是包含“部门”的各种平均值的词典。这是我希望乘以'est7wks'的值,如果条件保持不变,请确保您还添加了您得到的输出,并指定了它的确切问题。如果我想对多个条件执行此操作,例如silver\u mask=df2[Product\u Line]。eqSilver Line,然后我有具有不同值的Product\u mean 2。你能用silver_mask帮助考虑第二种情况并提供一个代码来同时运行它们吗?这将是相同的代码,但使用你的silver_mask。如果你想同时使用它们,你正在朝着一个大的条件组合前进。你应该让你的问题更清楚地说明你想要实现什么。product_的意思是一个字典,上面有键和值。是的,这就是为什么我使用in运算符和[]运算符来测试键并获取值。