【问题标题】:How to store list of dict to excel using pandas如何使用熊猫将字典列表存储到excel
【发布时间】:2021-10-19 01:19:38
【问题描述】:

我正在尝试使用 pandas 存储一个 dict 列表以进行 excel 处理。不知怎的,我不知道该怎么做。

lstofdic = [{'96': ['1/3/21', '1/3/22']}, {'97': ['1/3/20']}, { '98': []}, {'180': ['1/4/7']}, {'181': []}]

我尝试如下

import pandas as pd
writer = pd.ExcelWriter("out.xlsx")
for l in lstofdic:
    pd.DataFrame(l.keys(),l.values()).to_excel(writer,  header=['vlan','port'], sheet_name='sheet1', index=False)
writer.save()

请帮助解决我的问题。提前致谢。

【问题讨论】:

    标签: python-3.x pandas list dataframe dictionary


    【解决方案1】:

    bfill试试这个代码:

    print(pd.DataFrame(lstofdic).T.bfill(axis=1).iloc[:, 0].reset_index().rename({'index': 'vlan', 0: 'port'}, axis=1))
    

    输出:

      vlan              port
    0   96  [1/3/21, 1/3/22]
    1   97          [1/3/20]
    2   98                []
    3  180           [1/4/7]
    4  181                []
    

    【讨论】:

      【解决方案2】:

      您可以使用列表推导获取数据帧,然后使用str.join() 加入',' 的“端口”值:

      df=pd.DataFrame([[*x.keys(),*x.values()] for x in lstofdic],columns=['vlan','port'])
      df['port']=df['port'].str.join(',')
      

      df的输出:

          vlan    port
      0   96      1/3/21,1/3/22
      1   97      1/3/20
      2   98  
      3   180     1/4/7
      4   181     
      

      如果你想要excel文件,那么你可以使用to_excel()方法:

      df.to_excel("out.xlsx", index=False)
      

      【讨论】:

        【解决方案3】:

        将列表推导与扁平化字典结合使用并通过, 连接值:

        df = pd.DataFrame([(k, ','.join(v)) for x in lstofdic for k, v in x.items()], 
                          columns=['vlan','port'])
        print (df)
            vlan    port
        0   96      1/3/21,1/3/22
        1   97      1/3/20
        2   98  
        3   180     1/4/7
        4   181      
        

        用于写入 excel:

        writer = pd.ExcelWriter("out.xlsx")
        df.to_excel(writer,  sheet_name='sheet1', index=False)
        writer.save()
        

        或者:

        df.to_excel("out.xlsx", sheet_name='sheet1', index=False)
        

        【讨论】:

          猜你喜欢
          • 2022-01-24
          • 2019-08-20
          • 1970-01-01
          • 1970-01-01
          • 2019-11-01
          • 2021-04-30
          • 2019-09-28
          • 2020-09-25
          • 2019-05-02
          相关资源
          最近更新 更多