我们正在使用下面的 Dataframe 来创建json文件
输入文件
import pandas as pd
import numpy as np
a1=["DA_STinf","DA_Stinf_NA","DA_Stinf_city","DA_Stinf_NA_ID","DA_Stinf_NA_ID_GRANT","DA_country"]
a2=["data.studentinfo","data.studentinfo.name","data.studentinfo.city","data.studentinfo.name.id","data.studentinfo.name.id.grant","data.country"]
a3=[np.NaN,np.NaN,"StringType",np.NaN,"BoolType","StringType"]
d1=pd.DataFrame(list(zip(a1,a2,a3)),columns=['data','action','datatype'])
我们必须以动态方式使用上述 Dataframe 构建以下2个结构,我们已将上述数据适配为以下格式
对于模式,例如::
StructType([StructField(Column_name,Datatype,True)])
对于数据,例如:
F.struct(F.col(column_name)).alias(json_expected_name)
架构的预期输出结构
StructType(
[
StructField("data",
StructType(
[
StructField(
"studentinfo",
StructType(
[
StructField("city",StringType(),True),
StructField("name",StructType(
[
StructField("id",
StructType(
[
StructField("grant",BoolType(),True)
])
)]
)
)
]
)
),
StructField("country",StringType(),True)
])
)
])
2)预期数据提取
df.select(
F.struct(
F.struct(
F.struct(F.col("DA_Stinf_city")).alias("city"),
F.struct(
F.struct(F.col("DA_Stinf_NA_ID_GRANT")).alias("id")
).alias("name"),
).alias("studentinfo"),
F.struct(F.col("DA_country")).alias("country")
).alias("data")
)
我们必须使用for循环,并将这些条目添加到(www.example.com)data-〉studentinfo-〉name-〉id中,我已经在预期输出结构中添加了这些条目data.studentinfo.name.id) data->studentinfo->name->id Which I have already add in expected output structure
1条答案
按热度按时间uxh89sit1#
这是结果json。2你需要怎样把json重组成一个你想要的新的层次json结构。3 action有你的树的层次元素和类型的数据类型。4我认为你可以假设null数据类型是numeric。5 name数据类型是错误的null。6它应该是stringtype
输出:
数字是层次结构中的级别