0

I have a python dataframe as below. python dataframe:-

Emp_No  Name    Project Task
1   ABC P1  T1
1   ABC P2  T2
2   DEF P3  T3
3   IJH Null    Null

I need to convert it to json file and save it to disk as below

Json File

 {
   "Records"[
      {
         "Emp_No":"1",
         "Project_Details":[
            {
               "Project":"P1",
               "Task":"T1"
            },
            {
               "Project":"P2",
               "Task":"T2"
            }
         ],
         "Name":"ÄBC"
      },
      {
         "Emp_No":"2",
         "Project_Details":[
            {
               "Project":"P2",
               "Task":"T3"
            }
         ],
         "Name":"DEF"
      },
      {
         "Emp_No":"3",
         "Project_Details":[
            
         ],
         "Name":"IJH"
      }
   ]
}
1
  • 1
    Please, check How to Ask. Post minimal reproducible example of your code (what have you tried) and explain what particular problem you cannot solve. Commented Feb 18, 2021 at 13:43

1 Answer 1

1

I feel like this post is not a doubt per se, but a cheecky atempt to avoid formatting the data, hahaha. But, since i'm trying to get used to the dataframe structure and the different ways of handling it, here you go!

import pandas as pd

asutosh_data = {'Emp_No':["1","1","2","3"], 'Name':["ABC","ABC","DEF","IJH"], 'Project':["P1","P2","P3","Null"], 'Task':["T1","T2","T3","Null"]}

df = pd.DataFrame(data=asutosh_data)

records = [] 

dif_emp_no = df['Emp_No'].unique()

for emp_no in dif_emp_no :

    emp_data = df.loc[df['Emp_No'] == emp_no]
    emp_project_details = []
    for index,data in emp_data.iterrows():
        if data["Project"]!="Null":
            emp_project_details.append({"Project":data["Project"],"Task":data["Task"]})
    records.append({"Emp_No":emp_data.iloc[0]["Emp_No"], "Project_Details":emp_project_details , "Name":emp_data.iloc[0]["Name"]})

final_data = {"Records":records}

print(final_data)

If you have any question about the code above, feel free to ask. I'll also leave below the documentation i've used to solve your problem (you may wanna check that):

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.