Создайте столбец Json из значений в том же формате csv (мой собственный формат json) в python pandas - PullRequest
1 голос
/ 13 апреля 2020

У меня есть фрейм данных -

+----------+----------+--------+
|     FNAME|     LNAME|     AGE| JSON FOR EACH CUSTOMER
+----------+----------+--------+
|      EARL|     JONES|      35|   ? 
|      MARK|      WOOD|      20|   ?
+----------+----------+--------+

И у меня есть формат json -

{
  "applicantSegment": {
    "applicantName": {
      "name1": "" ,
      "name3": "" 
    },
    "ids": [
      {
        "type": "",
        "value": ""
      }
    ],
    "phones": [
      {
        "type": "",
        "value":""  
      }
    ],
    "emails": [
      {
        "value": "" 
      }
    ],
    "dob": {
      "dobDate": "" ,
      "age" : ""  
    }
  }

Мне нужно создать новый столбец json в фрейме данных таким образом, чтобы Новый столбец имеет json значений для каждой строки. Например, новое значение столбца для первой строки будет -

{
  "applicantSegment": {
    "applicantName": {
      "name1": "EARL" ,
      "name3": "JONES" 
    },
    "ids": [
      {
        "type": "",
        "value": ""
      }
    ],
    "phones": [
      {
        "type": "",
        "value":""  
      }
    ],
    "emails": [
      {
        "value": "" 
      }
    ],
    "dob": {
      "dobDate": "" ,
      "age": 35  
    }
  }

Может кто-нибудь помочь, пожалуйста? Обязательный датафрейм с новой json строкой

+----------+----------+--------+--------------------------------------------------------------
|     FNAME|     LNAME|     AGE| JSON FOR EACH CUSTOMER
+----------+----------+--------+--------------------------------------------------------------
|      EARL|     JONES|      35| {"applicantSegment": {"applicantName{"name1":
|          |                   |  "EARL","name3":"JONES" },"ids": [{"type": "","value": ""}],
|          |                   |  "phones"{"type":"","value":"" }],"emails": [{"value": "" }], 
|          |                   |   "dob": {"dobDate": "" ,"age":35  }}
|----------|----------|--------| ---------------------------------------------------------------                                                                             
|          |                   |  {Same as above but values from this row
|      MARK|      WOOD|      20|                                                }

1 Ответ

0 голосов
/ 14 апреля 2020

Это взлом, но раньше я отвечал вам неправильно и чувствовал себя плохо, поэтому я решил дать вам что-то, что, по крайней мере, работает, как вы описали, пока кто-то другой не придет с лучшим ответом.

import pandas as pd
import json

df = pd.DataFrame({'FNAME': ['EARL','MARK'],
                  'LNAME': ['JONES','WOOD'],
                  'AGE': ["35","20"]})

df['json_representation'] = """{ "applicantSegment": { "applicantName": { "name1": """ + df['FNAME'] + """, "name3": """ + df['LNAME'][i] + """  }, "ids": [ { "type": "", "value": "" } ], "phones": [ { "type": "", "value":""  } ], "emails": [ { "value": ""  } ], "dob": { "dobDate": "" , "age" : """ + df['AGE'][i] + """  } } })"""

Я думаю, что реальное решение заключается в том, что вы должны создать это из словаря python, но я не вижу, чтобы у вас был какой-то уникальный предмет, который я мог бы использовать в качестве ключа.

d = {"applicantSegment": { "applicantName": { "name1": "" , "name3": ""  }, "ids": [ { "type": "", "value": "" } ], "phones": [ { "type": "", "value":""  } ], "emails": [ { "value": ""  } ], "dob": { "dobDate": "" , "age" : ""  } } }

s = ""
for i in df.index:
    d.update({ "applicantSegment": { "applicantName": { "name1": df['FNAME'][i] , "name3": df['LNAME'][i]  }, "ids": [ { "type": "", "value": "" } ], "phones": [ { "type": "", "value":""  } ], "emails": [ { "value": ""  } ], "dob": { "dobDate": "" , "age" : df['AGE'][i]  } } })
    s = s + ', ' + json.dumps(d)

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