【问题标题】:Read excel file with pandas and store values into Python dict with the column names as keys使用 pandas 读取 excel 文件并将值存储到 Python dict 中,以列名作为键
【发布时间】:2022-07-13 21:12:10
【问题描述】:

我有以下excel:

type        name          latitude    longitude
--------------------------------------------
area        area1         50.33       4.23
building    building1     -           -

我正在使用 pandas 使用以下函数读取 excel 文件:

def read_excel(self,sheet_name):
    df = pd.read_excel(io=self.excel_file, sheet_name=sheet_name)
    dict = df.to_dict()

我得到以下输出:

{
  'type': { 0: 'area', 1: 'building' }, 
  'name': { 0: 'area1', 1: 'building1' }, 
  'latitude': { 0: 50.33, 1: nan }, 
  'longitude': { 0: 4.23, 1: nan }
}

我想要以下输出:

[
    {
         'type': 'area', 
         'name': 'area1',
         'latitude': 50.33, 
         'longitude': 4.23
    }, 
    {
         'type': 'building', 
         'name': 'building1', 
         'latitude': nan, 
         'longitude': nan
    }
]

为此,我编写了以下函数:

def read_excel(self,sheet_name):
        df = pd.read_excel(io=self.excel_file, sheet_name=sheet_name)
        dict = df.to_dict()

        objects = []

        for i in range(0,len(df.index)):
            temp = {}
            temp['type'] = dict['type'][i]
            temp['name'] = dict['name'][i]
            temp['latitude'] = dict['latitude'][i]
            temp['longitude'] = dict['longitude'][i]
            objects.append(temp)

        print(objects)

这会产生我想要的输出。但是,我想要一个更动态的解决方案,例如我不需要创建一个带有静态分配列名的临时字典。

有什么建议可以实现吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    orient='records' 传递给to_json :)

    始终将文档视为调试步骤! https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_dict.html

    【讨论】:

      【解决方案2】:

      您是否尝试将其定位为records

      print(df.to_dict(orient='records'))
      

      【讨论】:

        猜你喜欢
        • 2017-09-18
        • 2022-11-12
        • 2018-08-04
        • 2018-05-25
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 2018-02-01
        • 2019-09-21
        相关资源
        最近更新 更多