web-dev-qa-db-ja.com

Python Pandas Excelシートで指定された正確な範囲を読み取るデータフレーム

さまざまなテーブル(およびExcelシートの他の非構造化データ)があります。.Excelシート 'data'の 'Sheet2'から 'A3:D20'の範囲外のデータフレームを作成する必要があります。

私が出会ったすべての例は、シートレベルまでドリルダウンしていますが、正確な範囲からそれを選択する方法ではありません。

_import openpyxl
import pandas as pd

wb = openpyxl.load_workbook('data.xlsx')
sheet = wb.get_sheet_by_name('Sheet2')
range = ['A3':'D20']   #<-- how to specify this?
spots = pd.DataFrame(sheet.range) #what should be the exact syntax for this?

print (spots)
_

これを取得したら、列Aでデータを検索し、列Bで対応する値を見つける予定です。

編集1:openpyxlには時間がかかりすぎることがわかったので、代わりにpandas.read_Excel('data.xlsx','Sheet2')に変更しました。少なくともその段階ではずっと高速です。

編集2:当分の間、私は自分のデータを1枚のシートに入れて、

  • 他のすべての情報を削除しました
  • 追加された列名、
  • 左端の列に_index_col_を適用しました
  • その後_wb.loc[]_を使用しました
11
spiff

これを行う1つの方法は、 openpyxl モジュールを使用することです。

以下に例を示します。

from openpyxl import load_workbook

wb = load_workbook(filename='data.xlsx', 
                   read_only=True)

ws = wb['Sheet2']

# Read the cell values into a list of lists
data_rows = []
for row in ws['A3':'D20']:
    data_cols = []
    for cell in row:
        data_cols.append(cell.value)
    data_rows.append(data_cols)

# Transform into dataframe
import pandas as pd
df = pd.DataFrame(data_rows)
7
ƘɌỈSƬƠƑ

pandas read_Excel documentation の次の引数を使用します。

  • skiprows:リストのような
    • 開始時にスキップする行(0インデックス付き)
  • parse_cols:intまたはlist、デフォルトNone
    • [なし]の場合、すべての列を解析し、
    • Intが解析される最後の列を示す場合
    • Intのリストが解析される列番号のリストを示している場合
    • 文字列が列名と列範囲のコンマ区切りリストを示す場合(例:「A:E」または「A、C、E:F」)

呼び出しは次のようになります。

df = read_Excel(filename, 'Sheet2', skiprows = 2, parse_cols = 'A:D')
11
shane

pandas O.25がテストされ、うまくいった

pd.read_Excel('resultat-elections-2012.xls', sheet_name = 'France entière T1T2', skiprows = 2,  nrows= 5, usecols = 'A:H')
pd.read_Excel('resultat-elections-2012.xls', index_col = None, skiprows= 2, nrows= 5, sheet_name='France entière T1T2', usecols=range(0,8))

だから:私は2つの最初の行の後にデータが必要です。選択した目的の行(5)および列AからH。
@ shaneの回答を改善し、パンダの新しいパラメーターで更新する必要があることに注意してください

my original Excel

my process with pandas read_Excel

1
ddnsimplon