【问题标题】:Appending data from dataframe to JSON将数据从数据框附加到 JSON
【发布时间】:2020-03-08 21:47:18
【问题描述】:

我正在尝试从数据帧生成 JSON 输出,但我不确定为什么没有单独分配这些值:

emails = []

if len(df) > 0:

    for index, name in df.iterrows():
        try:
            value = str(df.names)
        except:
            continue

        email = { 
        "names": value
        }
        emails.append(email)

print(json.dumps(emails, indent=4))

输出:

[
    {
        "names": "0       abby\n1    josh\n2    john\n3       heather\n4       justin\nName: value, dtype: object"
    }, 
    {

想要的输出”

[
    {
        "names": abby
 }, 
    {
        "names": josh
 }, 
    {
        "names": john
}

]

【问题讨论】:

  • 您只希望数据框中的名称?还是将整个数据框转换为 Json?
  • 我只想要我的数据框中的名称,我不知道如何让它遍历它们。

标签: python json pandas


【解决方案1】:

使用pandas.DataFrame.to_json()

names = df[["names"]]
print(names.to_json(orient="records"))

参考documentation

【讨论】:

  • 非常感谢! emails = [] if len(email_list) > 0: for index, student in email_list.iterrows(): try: students = int(ids,student_ids) except: continue email = { "StudentEmails": [student.email], "学生”:学生,} emails.append(email) print(json.dumps(emails, indent=4)) 你能否告诉我如何将名称作为一行添加到来自单独数据框的 JSON 输出当我尝试将名称分开时。
  • @Abby_Hameed 循环遍历 pandas 数据框是个坏主意,您可以直接使用 pandas functions 生成您想要的输出
【解决方案2】:

电子邮件 = []

如果 len(email_list) > 0:

for index, student in email_list.iterrows():
    try:
        students = int(ids,student_ids)
    except:
        continue

    email = { 
    "StudentEmails": [student.email], 
    "student": students,
    }
    emails.append(email)

打印(json.dumps(emails, indent=4))

【讨论】:

    【解决方案3】:

    您需要读取实际数据(name.names)而不是整列(df.names

    尝试:

    
    if len(df) > 0:
    
        for index, name in df.iterrows():
            try:
                value = name.names
            except:
                continue
    
            email = {
            "names": value
            }
            emails.append(email)
    
    print(json.dumps(emails, indent=4))
    
    

    【讨论】:

      【解决方案4】:

      代替

      value = str(df.names)
      

      使用

      value = list(df.names)
      

      默认情况下系列对象不可序列化,但列表可序列化。例如这段代码:

      df = pd.DataFrame({"a": [1, 2,4,5]})
      json.dumps(list(df.a))
      

      将输出:

      '[1, 2, 4, 5]'
      

      【讨论】:

        猜你喜欢
        • 2017-09-22
        • 2016-08-14
        • 2018-10-13
        • 1970-01-01
        • 2013-03-31
        • 2021-08-15
        • 2021-06-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多