как персонализировать вывод Json для списка Pandas DataFrame и других выходных данных - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть следующий код, который дает информацию

  1. Заработная плата, полученная за месяц, и остаток до зачисления заработной платы
  2. Проверьте, зачисляется ли заработная плата до 5-го числа каждого месяца, если да, то список зарплат с указанием даты.
  3. средняя заработная плата за последние 3 месяца

Код

    if Salary.empty:
        total_Salary = 0
        Salary_b4_5th = "No"
        #sum_Salary = {'Salary': "-",'date': "-"}
        avg_Salary_3months = 0
        print("--------------")
        print("Is salary received before 5th :", Salary_b4_5th)
        print("--------------")
        print("No of times salary received :", total_Salary)

    else:

        Salary.date = pd.to_datetime(Salary.date, format="%d-%m-%Y")
        check_Salary_date = Salary[Salary['date'].dt.day <= 5].groupby('date').sum()
        check_Salary_date.index = check_Salary_date.index.strftime('%d-%b-%y')
        check_Salary_date.index.name = 'Date'
        sum_Salary = Salary.groupby('date').sum()
        sum_Salary = Salary.groupby(pd.Grouper(key='date', freq='1M')).sum()
        sum_Salary_3months = Salary.groupby(pd.Grouper(key='date', freq='1M')).mean().dropna(subset=['Salary']).tail(3)
        avg_Salary_3months = sum_Salary_3months['Salary'].mean()
        sum_Salary.index = sum_Salary.index.strftime('%b-%y')
        sum_Salary.index.name = 'Month'
        total_Salary = len(sum_Salary.axes[0])
        print("--------------")
        print("\nSalary received per month \n", sum_Salary)
        print("--------------")
        print("Total Count of salary received :", total_Salary)
        print("--------------")
        if not check_Salary_date.empty:
            Salary_b4_5th = "Yes"
            print("\nIs salary credited before 5th of every month:", Salary_b4_5th)
            print("--------------")
            print("List of salary credited before 5th : \n", check_Salary_date)
        else:
            Salary_b4_5th = "No"
            print("\nIs salary credited before 5th of every month:", Salary_b4_5th)
        print("--------------")
        print("Avg Salary of last 3 months :", avg_Salary_3months)
        print("--------------")

Вывод

Is salary credited before 5th: True
List of date where salary received before 5th :
           Balance before Salary   Salary
Date
03-Aug-18                 176.48  14783.0
04-Sep-18                  48.48  16249.0
05-Oct-18                 241.48  14448.0

Salary received per month
        Balance before Salary   Salary
Date
Jun-18                  27.20  15300.0
Jul-18                  88.20  15300.0
Aug-18                 176.48  14783.0
Sep-18                  48.48  16249.0
Oct-18                 241.48  14448.0
Nov-18                  49.48  15663.0
--------------
Avg Salary of last 3 months : 15453.333333333334
--------------

Ожидаемый вывод Json:

[{"Is salary credited before 5th": "True"},

{
    "List of salary credited before 5th": {
        "Balance before Salary": {
          "03-Aug-18":176.48,
          "04-Sep-18":48.48,
          "05-Oct-18":241.48

        },
        "Salary": {
        "03-Aug-18":14783.0,
        "04-Sep-18":16249.0,
        "05-Oct-18":14448.0

        }
    }
},
{
    "Salary received per month": {
        "Balance before Salary": {
          "Jun-18":27.2,
          "Jul-18":88.2,
          "Aug-18":176.48,
          "Sep-18":48.48,
          "Oct-18":241.48,
          "Nov-18":49.48

        },
        "Salary": {
          "Jun-18":15300.0,
          "Jul-18":15300.0,
          "Aug-18":14783.0,
          "Sep-18":16249.0,
          "Oct-18":14448.0,
          "Nov-18":15663.0}
    }
},

{"Avg Salary of last 3 months" : 15453.333333333334} 
]

Вопросы:

  1. как сохранить несколько фреймов данных какфайл JSON.
  2. как сохранить несколько файлов Non-DataFrames вместе с кадрами данных в виде файла json.

Короче говоря, я хочу получить вывод в точности так, как указано в Ожидаемый выход Json .Как получить этот вывод?

1 Ответ

0 голосов
/ 18 декабря 2018

Использовать to_dict():

import json
expected_ans_1 = True
expected_ans_2 = 15453.333333333334

js = [{"Is salary credited before 5th": str(expected_ans_1)},
 {"List of salary credited before 5th": df1.to_dict()},
 {"Salary received per month": df2.to_dict()},
 {"Avg Salary of last 3 months": expected_ans_2}]

with open('test.json', 'w') as outfile:
    json.dump(js, outfile)

Сохранить ответы пользователя в переменных expected_ans_1 и expected_ans_2.Здесь df1 и df2 - это два ваших кадра данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...