当前位置: 首页 > 知识库问答 >
问题:

Python:将JSON从df列转换为单个df列

勾起运
2023-03-14

我有一个excel文件,看起来像这样:

Header3包含如下所示的JSON字符串

[
{"key1":"123","key2":"Value1"},
{"key1":"123","key2":"Value2"}, 
{"key1":"123","key2":"Value3"}
]

我想解析JSON Header3列,并为每个键创建一个列,其中键的名称附加有键2的值,整个文件中的键始终相同。

结束数据帧应如下所示:

实例:

需要成为:

在进入花哨的东西之前,我试图至少规范化数据,但我得到了一个空序列。

df = pd.read_excel('test.xlsx')
pd.json_normalize(df.JSON)

Output:
0
1
2
3
4
5
...
188 rows x 0 columns

共有1个答案

欧阳绪
2023-03-14

无法对其进行规范化,因为它是作为字符串从Excel加载的。试试这个:

import json

s = df["JSON"].apply(json.loads).explode()
tmp = (
    pd.DataFrame(s.to_list(), index=s.index)
    .set_index("card", append=True)
    .unstack()
)
tmp.columns = [".".join(col) for col in tmp.columns]

pd.concat([df[["Company"]], tmp], axis=1)

卡* 列看起来有点奇怪。如果您知道所指的列,那么您已经知道它的值,那么为什么要将其包含在输出数据帧中?

 类似资料:
  • 感兴趣的是在同一pyspark数据帧中将列表的这一列拆分为多列的scala-spark实现 给定该数据帧: 我想要一个新的数据帧,它包含分解值并映射到我提供的列名称: 尝试: 但它的格式错误,我不知道如何映射到我的 colNames 列表: 在上面的链接中,python的解决方案是使用列表理解: 但它没有显示如何使用提供的列名列表,因为列名只是列的索引。

  • 我在Spark中有一个数据框架,其中包含许多列和我定义的udf。我想要返回相同的数据帧,除了一列被转换。此外,我的udf接收字符串并返回时间戳。有一个简单的方法可以做到这一点吗?我试过了 但这返回一个RDD,并且只返回转换后的列。

  • 我想用另一个DF的行中的名称替换DF的一些列名称 如何用df2中的“狗”和“猫”替换df1中的“T1”和“T2”?

  • 我有以下,其值是字典: 我希望获得所需的输出: 我怎样才能把字典分成单独的列呢? 我见过使用函数拆分字符串的列,但不确定如何将其应用于字典作为值的情况。

  • 问题内容: 那是我的JSON数组,但我想将fruits字符串中的所有值转换为Python列表。正确的做法是什么? 问题答案: 您拥有了所需的一切。将是一个字典,将是一个列表

  • 问题内容: 我有一个字典列表,看起来像这样: 等等。列表中可能还有更多文档。我需要将它们转换为一个JSON文档,可以通过bottle返回该文档,但我不知道该怎么做。请帮忙。我在该网站上看到了类似的问题,但是我无法理解那里的解决方案。 问题答案: 使用json库 顺便说一句,您可能会考虑将变量列表更改为另一个名称,这是用于创建列表的内置函数,如果不更改变量名称,则可能会出现一些意外行为或错误代码。