python - 如何从 Python Pandas Dataframe 中的 STRING 列中提取嵌套字典?
问题描述
有一张表,其列的一个数据点event
如下所示:
'事件是一个字符串列!
df['event']
RETURNS:
"{'eventData': {'type': 'page', 'name': "WHAT'S UP"}, 'eventId': '1003', 'deviceType': 'kk', 'pageUrl': '/chick 2/whats sup', 'version': '1.0.0.888-10_7_2020__4_18_30', 'sessionGUID': '1b312346a-cd26-4ce6-888-f25143030e02', 'locationid': 'locakdi-3b0c-49e3-ab64-741f07fd4cb3', 'eventDescription': 'Page Load'}"
我正在尝试eventData
从字典中提取嵌套字典并创建一个新列,如下所示:
df['event']
RETURNS:
{'eventId': '1003', 'deviceType': 'kk', 'pageUrl': '/chick 2/whats sup', 'version': '1.0.0.888-10_7_2020__4_18_30', 'sessionGUID': '1b312346a-cd26-4ce6-888-f25143030e02', 'locationid': 'locakdi-3b0c-49e3-ab64-741f07fd4cb3', 'eventDescription': 'Page Load'}
df['eventData']
RETURNS:
{'type': 'page', 'name': "WHAT'S UP"}
我该怎么做呢?
解决方案
我终于从另一篇文章中找到了答案: Python flatten multilevel/nested JSON
使用方法:json_col = pd.DataFrame([flatten_json(x) for x in df['json_column']])
def flatten_json(nested_json, exclude=['']):
out = {}
def flatten(x, name='', exclude=exclude):
if type(x) is dict:
for a in x:
if a not in exclude: flatten(x[a], name + a + '_')
elif type(x) is list:
i = 0
for a in x:
flatten(a, name + str(i) + '_')
i += 1
else:
out[name[:-1]] = x
flatten(nested_json)
return out
推荐阅读
- python - 如何使用python pynput和opencv检测linux中键盘上的按键组合?
- node.js - Firebase 服务器错误:“无法加载默认凭据”
- r - 在 R 中寻找下面行中的值
- powershell - 查找 PowerShell 全局变量定义的位置
- c - 试图让猜数字程序在 3 次猜测后结束
- javascript - 生成器按钮和检查按钮的快乐数字
- c# - Hangfire Recurring Job 中的并行任务
- jquery - 未定义 + HTML 表单名称添加到用于 HTML / JQuery URL 附加的 URL
- c - 如何从终端输入 int 或 char 而无需在 Windows 和 Unix 上按“enter”
- android - 2019年如何在Android Studio中正确导入RecyclerView?