使用Python Pandas读取JSON文件并更新现有的Excel文件。

3

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  
1个回答

1
说你从以下内容开始:

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文件。

当我将其分配给friends并执行pd.merge时,它会抛出此错误ValueError: 无法合并DataFrame与类型为<class 'collections.OrderedDict'>的实例 - Rahul
你的代码中有在使用 OrderedDict 吗?我的代码中没有,所以我猜你可能在用其他方法。你合并的具体是什么,能否检查两个操作数的类型? - Ami Tavory
我只是在赋值 friends = pd.Series({k: list(v) for k, v in json.loads(j).items()}).to_frame().rename(columns={0: 'listOfFriends'}),然后使用 pd.merge。对于从文件中读取的 JSON 数据,我会这样做: json_data = json.load(open(input.json))
data = pd.read_json(json_data)
j=data.to_json()
- Rahul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接