Преобразование нескольких кадров данных pandas в json с помощью Python - PullRequest
0 голосов
/ 14 июля 2020

У меня нет идеи преобразовать несколько кадров данных в 3 слоя файла JSON.

Во-первых, я преобразовал следующие данные JSON в несколько кадров данных.

data={
  "John Peterson": {
    "age": 20,
    "address": "Turku",
    "occupation": "Doctor"
  },
  "John Munoz": {
    "age": 26,
    "address": "Oulu",
    "occupation": "Nurse"
  }}

, используя следующий код:

df = pd.DataFrame(data, columns=["age", "address", "occupation"])
df.index.name = "fullname"


# Last name
df["lastname"] = df.index.astype(str).str.split().str[1]
name = df.groupby(df.lastname).size().reset_index().rename(columns={0: "n_count"})
age = (
    df.groupby([df.lastname, df.age])
    .size()
    .reset_index()
    .rename(columns={0: "age_count"})
)
address = (
    df.groupby([df.lastname, df.address])
    .size()
    .reset_index()
    .rename(columns={0: "addr_count"})
)
occupation = (
    df.groupby([df.lastname, df.occupation])
    .size()
    .reset_index()
    .rename(columns={0: "occu_count"})
)

Затем я попытался l oop фреймы данных и построил JSON:

dict={}

for i,n in name.iterrows():
    dict[n.lastname]['count']=n.n_count
    for a, ag in age.iterrows():
        dict[n.lastname]['count'][ag.age]=ag.age_count

Это вызвало у меня ошибку из-за возраст.

Мой ожидаемый результат выглядит следующим образом:

{
            'lastname1': {
                'count': number_of_people,
                'age': {
                    'age1': occurence,
                    'age2': occurence
                },
                'address': {
                    'address1': occurence,
                    'address2': occurence
                },
                'occupation': {
                    'job1': occurence
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...