簡體   English   中英

Python:如何將多個 Excel 工作表讀取到列表中?

[英]Python: How to read multiple Excel sheets into a list?

從 Excel 中,如何將“Sheet1”和“Sheet2”解析為list 我目前正在使用xlrd ,如下面的代碼所示。

表 1:

在此處輸入圖像描述

表2:

在此處輸入圖像描述

我的代碼:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
from __future__ import print_function
import xlrd
import sys

loc = 'excel.xlsx'
wb = xlrd.open_workbook(loc, encoding_override="iso-8859-5, cyrillic")
wb_name = wb.sheet_names()
count = len(wb_name)
data = []
column_excel =('Name', 'Course', 'Cost', 'level')
count_column = len(column_excel)
for i in range(count):
    ow = xlrd.open_workbook('excel.xlsx').sheet_by_index(i)
    for x in range (0, 100):
        for i in range(2):
            try:
                if ow.cell_value(0, x) == column_excel[i]:
                    ips = ow.col_values(x, 1)
                    data.append(ips)
                    break
            except IndexError:
                continue
print(data)

我的結果:

[['Andre'], [1], [200], [5],
['Sam'], [2], [100], [8],
[7], ['Antony'], [4], [150],
[9], ['Ben'], [3], [500]]

預期 output:

[['Andre'], [1], [200], [5],
['Sam'], [2], [100], [8],
['Antony'], [4], [7], [150],
['Ben'], [3], [9], [500]]

如果您想使用pandas來讀取 XLSX 文件,而不是xlrd ,那么從編碼的角度來看,事情會變得簡單得多。 此外,由於.append() function 的設計非常巧妙,列是自動對齊的(假設列名相同) - 這會很有幫助,因為工作表具有不同的列順序。

官方 pandas read_excel文檔可以在這里找到。

示例代碼:
使用多張工作表調用.read_excel()時,將返回 DataFrames ( df_ ) 的dict 第二行代碼用於組合 DataFrame。

import pandas as pd

df_ = pd.read_excel('courses.xlsx', sheet_name=['Sheet1', 'Sheet2'])
df = pd.DataFrame().append([df_[i] for i in df_]).reset_index(drop=True)

Output(作為數據幀):

      Name  Course  Cost  level
0    Andre       1   200      5
1      Sam       2   100      8
2  Anthony       4   150      7
3      Ben       3   500      9

Output(作為列表):

>>> df.to_numpy().tolist()

[['Andre', 1, 200, 5],
 ['Sam', 2, 100, 8],
 ['Anthony', 4, 150, 7],
 ['Ben', 3, 500, 9]]

致謝:
此列表 output 與問題中預期的 output 不同(格式上)。 我認為這是一個設計缺陷,因為這個答案的 output 提供了記錄列表而不是單個字段的列表 - 這可能會在以后變得難以管理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM