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
没有评论:
发表评论