2021年2月6日星期六

Python/Pandas: Reshape and Concatenate with matching [closed]

I have two dataframes like the ones shown below. df1

df2

How can I go about generating a dataframe like the following ('DataFrame3') based on the previous two dataframes?

enter image description here

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

没有评论:

发表评论