【发布时间】:2020-01-21 19:38:43
【问题描述】:
我尝试从我的 pandas 数据框中的嵌套字典创建一个数据框,但我无法让它工作...
我的数据框:
created_at selected
2019-08-13T12:24:53+00:00 {"982813":false,"1786112":true,"3002218":false}
2019-08-31T13:47:51+00:00 {"309279":true,"1903384":false}
...
并且我想创建一个新的 df,其所选列数据的格式如下:
created_at ID Value
2019-08-13T12:24:53+00:00 982813 false
2019-08-13T12:24:53+00:00 1786112 true
2019-08-13T12:24:53+00:00 3002218 false
2019-08-31T13:47:51+00:00 309279 true
2019-08-31T13:47:51+00:00 1903384 false
...
我一直在尝试使用 explode() 和 json_normalize() 但没有成功,所以我决定使用 pd.DataFrame.from_dict() 和如下的 for 循环,但我遇到了错误。
x = {}
for row in df.selected:
pd.DataFrame.from_dict(row, orient='index')
但我收到以下错误:
AttributeError: 'str' 对象没有属性 'values'
我仍然是 python 的初学者,所以如果有人作为一个想法/解释我全神贯注。
【问题讨论】:
-
这是因为每个
row都是一个字符串,而不是dict。您的预期输出是什么? -
我的目标是取出字典并创建一个新的 df。使用以下代码,我只想输出数据以使用 id 作为索引和列中的 True/False。像这样:
python for row in df.selected: x[row] = pd.DataFrame.from_dict(row, orient='index') final = pd.concat(x.values()) print(final) Index Value 982813 false 1786112 true 3002218 false 309279 true 1903384 false ...