same input is used in two cases, but different result is returned from python module
here is the python script that return the result to the webservice:
import pandas as pd
import sys
def get_segments(dataframe):
dataframe['segment']=dataframe['segment'].astype('str')
segments = dataframe.loc[~dataframe['segment'].duplicated()]['segment']
return segments
def azureml_main(dataframe1 = None, dataframe2 = None):
df = dataframe1
segments = get_segments(df)
segmentCount =segments.size
if (segmentCount > 0) :
res = pd.DataFrame(columns=['segmentId','recommendation'],index=[range(segmentCount)])
i=0
for seg in segments:
d= df.query('segment ==["{}"]'.format(seg)).sort(['count'],ascending=[0])
res['segmentId'][i]=seg
recommendation='['
for index, x in d.iterrows():
item=str(x['ItemId'])
recommendation = recommendation + item + ','
recommendation = recommendation[:-1] + ']'
res['recommendation'][i]= recommendation
i=i+1
else:
res = pd.DataFrame(columns=[seg,pdver],index=[range(segmentCount)])
return res,
when in experiment it returnd the actual itemIds, when in webservice it returns some numbers
the purpose of this code is to pivot some table by segment column for recommendation
After discussion with the product team from Microsoft. the issue was resolved. the product team rolled out an update to the web service first, and only later to the ML-Studio, which fixed an issue with categorical attributes in "Execute python script". the issue was in a earlier stage of the flow and has nothing to do with the python code above.