将数据从数据帧追加到JSON

时间:2019-11-13 06:15:43

标签: python json pandas

我正在尝试从数据帧生成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
}

]

4 个答案:

答案 0 :(得分:1)

您需要读取实际数据(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))

答案 1 :(得分:0)

使用pandas.DataFrame.to_json()

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

引用documentation

答案 2 :(得分:0)

代替

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]'

答案 3 :(得分:0)

电子邮件= []

如果len(电子邮件列表)> 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(电子邮件,indent = 4))

相关问题