I have two dataframes like the ones shown below. 
How can I go about generating a dataframe like the following ('DataFrame3') based on the previous two dataframes?
In the past, I've used melt to transform datasets from wide to long format, but this scenario is particularly tricky given that some matching of table elements is required.
EDIT: Apologies for not posting these to start. Here's the code to generate the two input dataframes.
Dataset 1:
data1 = [{'grp': 2131, 'grp_n': "Materials", 'service_sk': 21311, 'service': "service, one", 'factor': "Detroit", 'output': 0.81959042}, {'grp': 2131, 'grp_n': "Materials", 'service_sk': 21311, 'service': "service, one", 'factor': "Pittsburgh", 'output':None}, {'grp': 2131, 'grp_n': "Materials", 'service_sk': 21312, 'service': "service, two", 'factor': "Detroit", 'output': 1.5038647}, {'grp': 2131, 'grp_n': "Materials", 'service_sk': 21312, 'service': "service, two", 'factor': "Pittsburgh", 'output':None}, {'grp': 1113, 'grp_n': "Machines", 'service_sk': 11131, 'service': "service, three", 'factor': "Detroit", 'output':None}, {'grp': 1113, 'grp_n': "Machines", 'service_sk': 11131, 'service': "service, three", 'factor': "Pittsburgh", 'output':None}, {'grp': 1113, 'grp_n': "Machines", 'service_sk': 11132, 'service': "service, four", 'factor': "Detroit", 'output': 1.7252077}, {'grp': 1113, 'grp_n': "Machines", 'service_sk': 11132, 'service': "service, four", 'factor': "Pittsburgh", 'output': 1.6642461}, {'grp': 1113, 'grp_n': "Machines", 'service_sk': 11133, 'service': "service, five", 'factor': "Detroit", 'output':None}, {'grp': 1113, 'grp_n': "Machines", 'service_sk': 11133, 'service': "service, five", 'factor': "Pittsburgh", 'output': 1.4525868}, ] # Input dataframe 1 df1 = pd.DataFrame(data1) df1 Dataset 2:
data2 = [{'grp_n': "Materials", 'c_Detroit': 104, 'c_Pittsburgh': 184, 'i_service, two': 18.5241, 'i_service, one': 10.1906, 'i_service, four': 1, 'i_service, five': 1}, {'grp_n': "Machines", 'c_Detroit': 56, 'c_Pittsburgh': 89, 'i_service, two': 1, 'i_service, one': 1, 'i_service, four': 24, 'i_service, five': 34.534} ] # Input dataframe 2 df2 = pd.DataFrame(data2) df2 https://stackoverflow.com/questions/66072885/python-pandas-reshape-and-concatenate-with-matching February 06, 2021 at 10:00AM


没有评论:
发表评论