我尝试从我的 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}
...
Run Code Online (Sandbox Code Playgroud)
我想用选定的列数据创建一个新的 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
...
Run Code Online (Sandbox Code Playgroud)
我一直在尝试使用 expand() 和 json_normalize() 没有成功,所以我决定使用 pd.DataFrame.from_dict() 和如下所示的 for 循环,但我遇到了错误。
x = {}
for row in df.selected:
pd.DataFrame.from_dict(row, orient='index')
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
AttributeError: 'str' 对象没有属性 'values'
我仍然是 python 的初学者,所以如果有人作为一个想法/解释,我会全神贯注。
这是一个向您展示这个想法的微观示例。如果您的体积很大,则不建议:
import pandas as pd
df = pd.DataFrame([[1, {'abc':11}], [2, {'def':22, 'ghi':33}]], columns=['id', 'dct'])
lst = []
for index, row in df.iterrows():
for key, value in row['dct'].items():
lst.append([row['id'], key, value])
new = pd.DataFrame(lst, columns=['id', 'string', 'value'])
print(new)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1352 次 |
| 最近记录: |