さまざまなテーブル(および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[]
_を使用しましたこれを行う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)
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')
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の回答を改善し、パンダの新しいパラメーターで更新する必要があることに注意してください