excel文件名=exl.xlsx
Excel数据:

name  surname   email
a     sname     abc.com
b     sname2    efg.com

json文件名=input.json
json数据
{
 "a":
    {
     "friend1":4444444444,
     "friend2":5555555555,
     "friend3":1111111111
    },
 "b":
    {
     "friend3":6565656565,
     "friend2":9999999999,
     "friend5":9999988888
    }
}


import json
import panda as pd

json_data = json.load(open(input.json))
data = pd.read_json(json_data)

excel_file = pd.read_excel(exl.xlsx, na_filter=False, header=0)

我希望更新excel文件时,将json中的名称与excel匹配,并在excel中添加名为“listOfFriends”的新列,对于匹配的名称,将更新列
name  surname   email    listOfFriends
a     sname     abc.com  friend1, friend2, friend3
b     sname2    efg.com  friend3, friend2, friend5

最佳答案

假设你从

j = """
{
 "a":
    {
     "friend1":4444444444,
     "friend2":5555555555,
     "friend3":1111111111
    },
 "b":
    {
     "friend3":6565656565,
     "friend2":9999999999,
     "friend5":9999988888
    }
}
"""

那么
pd.Series({k: list(v) for k, v in json.loads(j).items()}).to_frame().rename(columns={0: 'listOfFriends'})

给予
    listOfFriends
a   [friend1, friend2, friend3]
b   [friend3, friend2, friend5]

如果您将此分配给friends,则只需
pd.merge(excel_file, friends, left_on='name', right_index=True)

并将结果写回Excel文件。

10-06 10:36
查看更多