Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重塑dict为值的数据帧_Python_Pandas_Dictionary_Reshape - Fatal编程技术网

Python 重塑dict为值的数据帧

Python 重塑dict为值的数据帧,python,pandas,dictionary,reshape,Python,Pandas,Dictionary,Reshape,我有一个熊猫数据帧,它以dict作为值。我想将此数据帧转换为预期结果中的格式 我想把这些列分成dict的每个键。 例如,对于第一列“问卷”,我需要“问卷.步骤”,“问卷.最后完成步骤”等等 这里的问题是json规范化不起作用: json_normalize(data=data) 有人知道如何修复它吗?是字符串格式的列值吗?如果是,那么你可以试试这个。 我在一个数据帧上尝试了这个,它成功了。迭代每列值将它们从str转换为dict,然后迭代这些值创建一个具有键值的新列,并将该值分配给该列 dat

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

我想把这些列分成dict的每个键。 例如,对于第一列“问卷”,我需要“问卷.步骤”,“问卷.最后完成步骤”等等

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

json_normalize(data=data)

有人知道如何修复它吗?

是字符串格式的列值吗?如果是,那么你可以试试这个。 我在一个数据帧上尝试了这个,它成功了。迭代每列值将它们从
str
转换为
dict
,然后迭代这些值创建一个具有键值的新列,并将该值分配给该列

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


这不是预期的输出!实际上,我想将dict拆分为一个数据框架,其中包含列['questionly.step'、'questionly.lastCompletedStep'、…]。这些列指dict的键,该键位于“调查问卷”列的值上。但有时它没有,有时它只是一个空的dict{}。是mutch explain吗?那么您想使用键作为列名,然后将相应的值分配给行吗?我想我的编辑将是您所期望的。是的,输出适用于具有dict的1行,但我的数据帧有很多没有值的行。所以我需要检查它的值是dict还是None。如果没有,那么我必须在我从“调查问卷”创建的所有专栏上都没有。因此,对于这一行,我需要在“inventory.step”和“inventory.lastCompletedStep”上加上“None”。但是在这一行中,我们没有需要的键的信息,因为在第一行中我们没有键。您可以硬编码一个
if语句,说明是否有
None
然后
df[“questionaire.step”]。insert=None df[“questionaire.lastCompletedStep”].insert=None
您只是在预处理数据,并且您知道其中包含的内容,因此您不必编写完全自动的代码来过滤数据集,除非您正在构建管道,并且您希望它可以用于任何类型的输入。建议的列问卷没有一致的数据,它没有任何值和空值。你打算用它们做什么?json_normalize是将原始json数据转换为数据。与front一样,您可以遍历行,将它们附加到列表中,并将其转换为json(即您需要一致的json格式,不允许任何格式),然后使用json_normalize将数据转换为数据帧。所需的输出是什么?嵌套的字典项可以通过递归函数在树上遍历来枚举。预期的输出是一个dataframe,每列中都有ur dict所有键的列。例如,对于调查问卷,我需要具有“inventory.step”、“inventory.lastCompletedStep”以及指定键的值。如果没有,我还需要这些没有值的列。这是一个大问题。因为我需要这些列来表示无值。因此,我们必须检查另一行,其中包含一个dict(而不是空dict),以了解我必须创建哪些列。
dataval = df.questionaire[0]
print(type(dataval))
result = eval(dataval)
print(result)
print(type(result))
for i,(k, v) in enumerate(result.items()):
df["questionaire"+"."+str(k)] = v
df