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