python - 在 python pandas 中从相同 csv(我自己的 json 格式)中的值创建一个 Json 列
问题描述
我有一个数据框-
+----------+----------+--------+
| 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| }
解决方案
这是一个 hack,但我之前回答错误并且感觉很糟糕,所以我想我会给你一些至少像你描述的那样有效的东西,直到其他人给出更好的答案。
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
推荐阅读
- time - 如何测量 Julia 中每个循环步骤的执行时间?
- javascript - 阻止在 Internet Explorer 中查看网页
- python - PANDAS 根据通配符输入特定 ID
- node.js - CloudFormation 更新堆栈
- laravel - Livewire Alpinejs 跨文件发射/调度变量
- javascript - Tic Tac Toe:如何将工厂函数合并到我的代码中?
- python-3.x - 从推理 Pytorch 接收坐标
- react-native - 使用从 URL 中获取的数组显示在 flatList 中
- unit-testing - MSBuild 不在 Bin 目录中创建 DLL
- python - 如何仅根据 numpy 数组判断频道顺序?