如何解决在 Pandas 中分解和解压列
假设我有下面这种结构的数据,如何分解包含列表的列然后解压分解的列?
来源:
d = {
"_id" : "5f2","connId" : 128,"hospitalList" : [
{
"hospitalId" : 29,"boardId" : 1019,"siteId" : 1
},{
"hospitalId" : 3091,"boardId" : 2163,"siteId" : 382
},{
"hospitalId" : 28,"boardId" : 1017,"siteId" : 5
}]
}
代码:
root = pd.json_normalize(d)
nested_cols = [i for i in root.columns if isinstance(root[i][0],list)]
l = [root.drop(nested_cols,1),]
for i in nested_cols:
l.append(pd.json_normalize(d,record_path=i))
output = pd.concat(l,axis=1)
print(output)
实际结果:
_id connId hospitalId boardId siteId
0 5f2 128.0 29 1019 1
1 NaN NaN 3091 2163 382
2 NaN NaN 28 1017 5
预期结果:
_id connId hospitalId boardId siteId
0 5f2 128.0 29 1019 1
1 5f2 128.0 3091 2163 382
2 5f2 128.0 28 1017 5
解决方法
这会输出您想要的内容。
root = pd.json_normalize(d)
nested_cols = [i for i in root.columns if isinstance(root[i][0],list)]
l = [root.drop(nested_cols,1),]
for i in nested_cols:
l.append(pd.json_normalize(d,record_path=i))
output = pd.concat(l,axis=1)
output.fillna(method='ffill',inplace=True)
不过,不幸的是,我不知道您将在什么情况下使用该代码,和/或您是否需要进行调整。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。