简体   繁体   English

将数据从 dataframe 附加到 JSON

[英]Appending data from dataframe to JSON

I am attempting to generate a JSON output from a dataframe and I'm not sure why the values are not being assigned separately:我正在尝试从 dataframe 生成 JSON output 并且我不确定为什么没有单独分配这些值:

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))

Output: Output:

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

Desired output"期望的输出”

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

]

Use pandas.DataFrame.to_json()使用pandas.DataFrame.to_json()

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

Refer documentation参考文档

Instead of代替

value = str(df.names)

Use利用

value = list(df.names)

Series object are not serializable by default but list are serializable. object 系列默认不可序列化,但列表可序列化。 For example this code:例如这段代码:

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

will output:将 output:

'[1, 2, 4, 5]'

emails = []电子邮件 = []

if len(email_list) > 0:如果 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)

print(json.dumps(emails, indent=4))打印(json.dumps(电子邮件,缩进=4))

You need to read the actual data( name.names ) not the whole column( df.names )您需要阅读实际数据( name.names )而不是整列( df.names

try:尝试:


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))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM