【问题标题】:How to get Excel data row by row in a Python list如何在 Python 列表中逐行获取 Excel 数据
【发布时间】:2021-08-24 11:59:56
【问题描述】:

我想从 excel 文件中逐行获取 python 列表中的数据。例如,我的 excel 文件包含多行数据,我的 python 列表的第一个元素将是一个包含第一行所有信息的列表,列表的第二个元素将是一个包含以下信息的列表excel文件的第二行,以此类推。 任何人都可以教我最简单的方法吗? 谢谢你:)

【问题讨论】:

标签: python excel pandas numpy


【解决方案1】:

最简单的方法是将该 excel 文件保存到 CSV 中,然后加载它。专有的 excel 文件很难解码。使用Save as... 和选项CSV file。

然后,这样做:

filename = ...
rows = []
with open(filename, "r") as f:
    for line in f:
        rows.append(line.split(","))
print(rows)
    

这种方法的优点是您不需要外部库来执行此操作。它只使用基本的 Python。

【讨论】:

  • 谢谢,但我只能使用 excel 文件。
  • @MR.JD 不走运。我猜熊猫是你最好的选择。
【解决方案2】:

如果您已经在使用 pandas,那么这相对简单:

import pandas as pd

df = pd.read_excel('book1.xlsx',engine='openpyxl',dtype=object,header=None)

print(df.head())

l = df.values.tolist()

print(l)

注意。如果您的包中还没有它,您可能需要pip install openpyxl。

Pandas read_excel documentation

编辑:您实际上并不需要 engine 和 dtype 参数:如果您指定“.xlsx”,pandas 默认为 openpyxl,您可以让 pandas 在大多数情况下处理这些类型。

header=None 很重要,否则 pandas 会将 Excel 工作表的第一行解释为数据框列名。

【讨论】:

    【解决方案3】:

    这将为您提供列表列表-

    import pandas as pd
    
    df = pd.read_excel('filename.xlsx')
    
    l1 = []
    
    for index, row in df.iterrows():
        l1.append(row.to_list())
    

    【讨论】:

    • 这里的“测试”是什么?
    • @MR.JD 很可能是df.iterrows()
    【解决方案4】:

    读取工作簿中工作表的给定列可以这样完成:

        # required packages: pandas, openpyxl
    
        #--- import section -------------------------------------------------
        import pandas 
    
        #--- create file variable: ------------------------------------------
    
        my_excel_file = "my_file.xlsx"
    
        #--- create lists: --------------------------------------------------
        df = pandas.read_excel(my_excel_file, sheet_name='my_sheet')
    
        # with header:
        my_list = (list)(df["my_header"].values)
    
        # without header:
        my_second_list = (list)(df[df.columns[1]].values)
    
        #--- process list: --------------------------------------------------
        print(len(my_list))
        for my_item in my_list:
                print(my_item, end = "; ")
    

    【讨论】:

      猜你喜欢
      • 2018-11-25
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 2010-09-25
      • 2017-05-05
      • 2018-05-29
      • 1970-01-01
      • 2021-12-25
      相关资源
      最近更新 更多