如何解决迭代问题,内减法不能正常工作
df2={'atanAN_ORGANIZASYON':['000053','00012','00014'],'stock':[10,23,99]
}
df2= pd.DataFrame(data=df2)
'''
talep={'FHY Sicil':['FB00662','FB003208'],'Şube Kodu':['00014','adet':[50,50]
}
talep= pd.DataFrame(data=talep)
'''
import warnings
warnings.filterwarnings('ignore')
lst=[]
for i in range(len(talep)):
for j in range(len(df2)):
if talep.iloc[i]['Şube Kodu']==df2.iloc[j]['atanAN_ORGANIZASYON']:
if df2.iloc[j]['stock']>=talep.iloc[i]['adet']:
lst.append([talep.iloc[i]['FHY Sicil'],talep.iloc[i]['Şube Kodu'],talep.iloc[i]['adet']])
df2.iloc[j]['stock']=df2.iloc[j]['stock']-talep.iloc[i]['adet']
break
elif df2.iloc[j]['stock']<talep.iloc[i]['adet'] and df2.iloc[j]['stock']>0:
lst.append([talep.iloc[i]['FHY Sicil'],df2.iloc[j]['stock']])
#print(df2.iloc[j]['stock'])
df2=df2[~(df2['atanAN_ORGANIZASYON']==df2.iloc[j]['atanAN_ORGANIZASYON'])]
break
#df2.iloc[j]['stock']=0
#df2.iloc[j]['stock']=df2.iloc[j]['stock']-talep.iloc[i]['adet']
#print(df2['stock'])
final = pd.DataFrame(lst,columns=['FHY Sicil','Şube Kodu','adet'])
final.sort_values(by=['Şube Kodu']).head(3)
- 00014 的库存为 99,但 FB006620 和 FB003208 总共交付了 100 个。每个人得到 50。
-
df2.iloc[j]['stock']=df2.iloc[j]['stock']-talep.iloc[i]['adet']
>> 我需要在第一次迭代后显示剩余金额。即,由于将 50 分配给 FB006620,因此应将剩余的 49 分配给 FB003208。
解决方法
df2={'ATANAN_ORGANIZASYON':['000053','00012','00014'],'stock':[10,23,99]
}
df2= pd.DataFrame(data=df2)
talep={'FHY Sicil':['FB00662','FB003208'],'Sube Kodu':['00014','adet':[50,50]
}
talep= pd.DataFrame(data=talep)
lst=[]
for i,tt in talep['Sube Kodu'].items():
for j,dd in df2['ATANAN_ORGANIZASYON'].items():
if dd == tt:
if df2['stock'][j]>=talep['adet'][i]:
lst.append([talep['FHY Sicil'][i],tt,talep['adet'][i]])
df2['stock'][j]-=talep['adet'][i]
elif df2['stock'][j]<talep['adet'][i] and df2['stock'][j]>0:
lst.append([talep['FHY Sicil'][i],df2['stock'][j]])
df2=df2[~(df2['ATANAN_ORGANIZASYON']==df2.iloc['ATANAN_ORGANIZASYON'][j])]
break
final = pd.DataFrame(lst,columns=['FHY Sicil','Sube Kodu','adet'])
final.sort_values(by=['Sube Kodu']).head(3)
print(final)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。