def price_insert_15_20_30(self,df,column):
df = df.rename(columns={column:'sku'})
data = pd.read_excel(r'C:\Users\wangkejun\Desktop\orderadjust\tempdata\caculatetemp.xlsx')
data['sku'] = df['sku']
columns = list(data.columns)
data = pd.merge(data,df,on=['sku'],how='left',suffixes=['','_r'])
data['平台佣金率'] = data.apply(lambda x:x['平台佣金率补充'] if pd.notna(x['平台佣金率补充']) else x['平台佣金率'],axis=1)
data['采购价'] = data.apply(lambda x:x['采购价补充'] if pd.notna(x['采购价补充']) else x['采购价'],axis=1)
data['实重'] = data.apply(lambda x:x['计费重补充'] if pd.notna(x['计费重补充']) else x['实重'],axis=1)
data = data.loc[:,columns]
df = data.loc[:,['sku']]
for i in [0.15,0.2,0.3]:
datatemp = data.copy()
datatemp['毛利率'] = i
datatemp = datatemp.apply(self.calculate_price, axis=1)
title = f'{i*100}%'
datatemp = datatemp.rename(columns = {'price':title})
datatemp = datatemp.loc[:,['sku','平台佣金率', '采购价', '计费重',title]]
df = pd.merge(df,datatemp,how='left',on=['sku'])
df = df.rename(columns={'sku':column})
return df
# 费用相关数据
dfall['系统SKU'] = dfall['系统SKU'].astype('object')
dfbasicprice = pd.merge(dfall.loc[:,['系统SKU']],dfbasic,how='left',on=['系统SKU'])
dfbasicprice = dfbasicprice.dropna(subset=['系统SKU'])
dfbasicprice = caculate().price_insert_15_20_30(dfbasicprice,'系统SKU')
dfzongbiaojilu= dfbasicprice.loc[:, ['系统SKU', '平台佣金率', '采购价', '计费重']]
dfzongbiaojilu2= dfbasic.loc[:, ['系统SKU', '平台佣金率补充', '采购价补充', '计费重补充']]
merged_df = dfzongbiaojilu.merge(dfzongbiaojilu2, on='系统SKU')
# 去除NaN值
merged_df = merged_df.dropna()
# 插入数据到工作表
self.worksheetinsert(merged_df, number=1, worksheetid=excelsheet['总表新品数据记录表'])
具体来说,你首先将 dfall['系统SKU']
的数据类型更改为 'object',然后使用 pd.merge()
函数将 dfbasic
和 dfall
进行左连接,基于共同的列 '系统SKU'。接下来,你删除了包含 NaN 值的行,并将结果保存在 dfbasicprice
中。
然后,你对 dfbasicprice
调用了 caculate().price_insert_15_20_30(dfbasicprice, '系统SKU')
,并传入了参数 '系统SKU'
。这应该是一个自定义的计算函数,根据传入的 DataFrame 和列名进行价格计算和插入操作。请确保该函数能够正常运行,并返回预期的结果。
接下来,你从 dfbasicprice
和 dfbasic
中选择了特定的列,并分别保存在 dfzongbiaojilu
和 dfzongbiaojilu2
中。
最后,你使用 merge()
函数将 dfzongbiaojilu
和 dfzongbiaojilu2
基于列 '系统SKU' 进行合并,并保存在 merged_df
中。最后,你删除了包含 NaN 值的行,并将结果插入到工作表中