【问题标题】:Read json file and update existing excel using python pandas使用 python pandas 读取 json 文件并更新现有的 excel
【发布时间】:2018-09-26 20:16:43
【问题描述】:

excel_file name = 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  

【问题讨论】:

    标签: python json excel pandas


    【解决方案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 文件。

    【讨论】:

    • 当我将它分配给朋友并执行 pd.merge ValueError: can not merge DataFrame with instance of type 时会引发此错误
    • 您是否在代码中的任何地方使用了OrderedDict?我的没有,所以我假设你在做一些不同的事情。你到底在做什么合并,你能检查两个操作数的类型吗?
    • 我只是分配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()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多