【发布时间】:2018-05-04 15:58:58
【问题描述】:
我有一个这样的 json 对象
{
"hits": {
"hits": [
{
"_source": {
"TYPES": [
{
"_ID": 130,
"_NM": "ARB-130"
},
{
"_ID": 131,
"_NM": "ARB-131"
},
{
"_ID": 132,
"_NM": "ARB-132"
}
]
}
},
{
"_source": {
"TYPES": [
{
"_ID": 902,
"_NM": "ARB-902"
},
{
"_ID": 903,
"_NM": "ARB-903"
},
{
"_ID": 904,
"_NM": "ARB-904"
}
]
}
}
]
}
}
我需要将它解压到 pandas 数据帧中,这样我才能在 _types 对象下获得所有唯一的 _id 和 _nm 对
_ID _NM
0 130 ARB-130
1 131 ARB-131
2 132 ARB-132
3 902 ARB-902
4 903 ARB-903
5 904 ARB-904
我正在寻找可能的最快解决方案,因为类型的数量和类型中的对数可能达到数十万。因此,我使用 pd.Series 解包并使用 apply 使其变慢,如果可能的话,我想避免它。任何想法,将不胜感激。还有关于在不使用 pd.Series 的情况下将列中的字典或列表分解为单独的列,因为我经常遇到这个用例
【问题讨论】:
-
人们是否也可以在对问题投反对票之前提供理由。如果语言有改进的话我会的,但除非有人告诉我,否则我不会知道
-
我赞成你的问题。但是我猜有两个原因:(1)我们看不到您现有的代码,因此无法判断我们的解决方案是否会比您现在拥有的更快; (2)“尽可能快”尚不清楚 - 最快可能的解决方案可能涉及下降到 Cython 或其他一些非平凡的优化。这就是为什么我将您的问题重新命名为“有效地”。
-
由于公司政策,我不能放代码。然而,我已经明确表示我知道如何找到解决方案,但需要一个高性能的解决方案。我不相信这里的效率这个词。因此,关于将所述 dict 对象转换为 pandas df 的最快方法是什么(如果有没有深入研究 Cython 的可用方法),这更像是一个普遍的问题
-
虽然您无法发布代码,但您能否提供现有解决方案的概要......例如您正在使用哪个库,什么函数、生成器或列表理解等?我正在尝试帮助您改进您的问题,以便获得更多关注。不要个人认为。
-
我不是在防守。我真的想让这个问题变得更好,以防其他人在同一条船上,考虑到我有多少这个问题的用例,我敢打赌很多人都遇到过它。我确实提到我使用 pd.Series 并申请。根据我在网上的研究,这些速度很慢,因为它们遍历数据帧的每一行。我查看了 ast 库,但无法让它为我的目的工作
标签: python pandas dictionary dataframe