重塑以 dict 作为值的熊猫数据框

问题描述

我有一个以 dict 作为值的 Pandas 数据框。我想将此数据帧转换为预期结果中的格式。

image of the df i have

我想将列拆分为字典的每个键。 例如,对于第一列“问卷”,我想要“questionnaire.step”、“questionnaire.lastCompletedStep”等。

这里的问题是 json 规范化不起作用:

json_normalize(data=data)

有人知道怎么解决吗?

解决方法

列值的格式是否为 string 类型?如果是,那么你可以试试这个。 我在数据框上试过这个,它奏效了。遍历每列值将它们从 str 转换为 dict 然后遍历这些值创建一个具有键值的新列并将值分配给该列。

data  =  [str({"step": 7,"lastCompletedStep": 7})]
df = pd.DataFrame(data,columns=["questionaire"])
df

enter image description here

dataval = df.questionaire[0]
print(type(dataval))

enter image description here

result = eval(dataval)
print(result)
print(type(result))

enter image description here

for i,(k,v) in enumerate(result.items()):
df["questionaire"+"."+str(k)] = v
df

enter image description here