pandas - Pandas 将字典嵌入到列名匹配键的列中
问题描述
我在 Pandas 中有以下数据框:
column_names = ["item", "item_dict", "loc1", "loc2", "loc3", "loc4", "loc5", "loc6", "loc7", "loc8", "loc9"]
data = [['p26CE0DEAC1', {'loc1': 50, 'loc4': 50, 'loc7': 33}, 0, 0, 0, 0, 0, 0, 0, 0, 0], ['p5505CB1A96', {'loc1': 48}, 0, 0, 0, 0, 0, 0, 0, 0, 0], ['p1B9E6A73EC', {}, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
df_sample = pd.DataFrame(data, columns = column_names)
第一列[“item”]是项目的标识号。第二列 ["item_dict"] 是一个字典,其键显示项目位置,值显示该位置的项目数量。第三到第十一列对应于存储项目的每个位置,并且这些列标签与 item_dict 列中的键匹配。
我要弄清楚的是如何获取嵌入在每一行的 item_dict 列中的字典,并将值移动到名称与该字典中的键匹配的列中。
我希望输出最终成为:
column_names = ["item", "item_dict", "loc1", "loc2", "loc3", "loc4", "loc5", "loc6", "loc7", "loc8", "loc9"]
data = [['p26CE0DEAC1', {'loc1': 50, 'loc4': 50, 'loc7': 33}, 50, 0, 0, 50, 0, 0, 33, 0, 0], ['p5505CB1A96', {'loc1': 48}, 48, 0, 0, 0, 0, 0, 0, 0, 0], ['p1B9E6A73EC', {}, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
df_sample = pd.DataFrame(data, columns = column_names)
作为一个爱好者,我不知道如何做到这一点。我的每一次尝试都是可怕的失败。如果有人甚至有使用嵌入在 pandas 数据框中的字典的参考,他们可以指向我,我会很感激,但我无法在堆栈溢出中找到任何解决这种情况的内容。
解决方案
df.update(df["item_dict"].apply(pd.Series))
>>> df
item item_dict loc1 loc2 loc3 loc4 loc5 loc6 loc7 loc8 loc9
0 p26CE0DEAC1 {'loc1': 50, 'loc4': 50, 'loc7': 33} 50.0 0 0 50.0 0 0 33.0 0 0
1 p5505CB1A96 {'loc1': 48} 48.0 0 0 0.0 0 0 0.0 0 0
2 p1B9E6A73EC {} 0.0 0 0 0.0 0 0 0.0 0 0
推荐阅读
- jenkins - Artifactory Jenkins 插件发布 Python 项目
- scala - 如何迭代scala类成员以找到空值
- azure - 使用托管标识在 Azure 中应用服务到应用服务身份验证
- django - “找不到或无法读取要导入的文件:~bootstrap/scss/functions。”,“格式化”:“错误:找不到或无法读取要导入的文件:~
- symfony4 - 如何用多语言翻译网站
- spss - 如何识别同一案例中一系列日期中的第一个日期?
- python-3.x - 如何从字符串中获取我需要的单词?
- javascript - 如何在 React BigCalendar 中无法访问的组件上使用 useRef
- gremlin - 有没有办法在不写入文件的情况下获得内存中 TinkerGraph 的 GraphML 表示?
- javascript - javascript express.js 在保存操作期间通过模式的钩子将数据推送到猫鼬模型中