【问题标题】: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。
【解决方案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())
【解决方案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 = "; ")