8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

将字符串列转换为 json 并在 pyspark 中解析

user25653727 3月前

54 0

我的数据框看起来像|ID|Notes|---------------|1|'{\'Country\':\'USA\',\'Count\':\'1000\'}'||2|{\'Country\':\'USA\',\'Count\':\'100...

我的数据框看起来像

|ID|Notes|
---------------
|1|'{"Country":"USA","Count":"1000"}'|
|2|{"Country":"USA","Count":"1000"}|

ID : int
Notes : string

当我使用 from_json 来解析列 Notes 时,它会给出所有 Null 值。我需要帮助将此列 Notes 解析为 pyspark 中的列

帖子版权声明 1、本帖标题:将字符串列转换为 json 并在 pyspark 中解析
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由user25653727在本站《json》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 下面的 C++ 程序应该读取一个名为 english.json 的 json 文件并显示 \'title\' 信息。#include #包括#包括

    下面的 C++ 程序应该读取一个名为 json 文件 english.json 并显示 \'title\' 信息。

    #include <iostream>
    #include <fstream>
    #include <json/value.h>
    
    using namespace std;
    
    int main()
    {
        Json::Value language;
        ifstream language_file("english.json", std::ifstream::binary);
        language_file >> language;
    
        cout << language["title"] << endl;
    
        return 0;
    }
    

    但是当我运行该程序时,出现此错误:E0349 没有运算符\'>>\'与这些操作数匹配

    我尝试过使用 jsoncpp 库中的其他函数,但出现了更多错误,这种方法似乎是最简单、最有效的。

  • 启用了 \'个人帐户\' 进行身份验证的标准 Blazor 应用模板会创建这些文件。这假设用户将使用电子邮件作为主要登录名,然后有 0..1 个附加

    启用了身份验证的“个人账户”标准 Blazor 应用模板会创建这些文件。

    enter image description here

    这假设用户将使用电子邮件作为主要登录,然后有 0..1 个额外的外部登录。

    我希望我的用户不必指定电子邮件地址 - 他们的主要 ID 可以是 twitter/facebook/google 等,然后添加其他标识符 - 包括电子邮件(如果他们愿意)。

    有人做过这个吗?

  • 使用 from_json() 函数时,请确保列值完全是字符串格式的 json/dictionary。在您提供的示例数据中,列值 Notes id=1 完全是 json 格式(它是一个字符串,但括在额外的单引号中)。 这就是它返回 NULL 值的原因。 在输入数据框上执行以下代码将产生以下输出。

    df = df.withColumn("Notes",from_json(df.Notes,MapType(StringType(),StringType())))
    

    enter image description here

    您需要更改输入数据,使整个 Notes 列采用相同的格式,即 json/dictionary 作为字符串,仅此而已,因为这是导致问题的主要原因。以下是帮助您解决问题的正确格式。

    | ID | Notes |
    ---------------
    | 1 | {"Country":"USA","Count":"1000"} |
    | 2 | {"Country":"USA","Count":"1000"} |
    

    要将 Notes 列值解析为 pyspark 中的列,您只需使用调用的函数 json_tuple() (无需使用 from_json())。它从 json 列(字符串格式)中提取元素并将结果创建为新列。

    df = df.select(col("id"),json_tuple(col("Notes"),"Country","Count")) \
        .toDF("id","Country","Count")
    df.show()
    

    输出:

    enter image description here

    注意: 如果列值的格式不正确,json_tuple() 也会返回 null(确保列值是 json/dictionary 类型的字符串,没有额外的引号)。

返回
作者最近主题: