前提・実現したいこと
[Python3]Excel表から指定された複数の数値の中から最小の数をセルに書き込みたい
上記リンクは以前質問したもので,今回は最小値ではなく直近のデータだけ取り出したいというものです。
python3.8でExcelの出庫履歴表から決算表(最終的にどの備品がどれくらい残っているかを見られるようにするための表)を作ろうとしていています。
複数の数値が指定されたとき,一番最近のデータだけを取り出したいのですがその数値を選択することができません。
お時間があれば有識者の方々,お手柔らかにご教示お願い致します。
発生している問題・エラーメッセージ
今回も例としてaaaの最終的な備品個数をprint表示させる場合を実行します。
aaaが表の中で2つ以上出てきたとき,該当数値すべてをprint表示はできるもののoffsetという一つの変数の中の数値だからかどちらも選択することができません。
備品名 | 備品個数 | 消費個数 | 日付 |
---|---|---|---|
hhh | 292 | 1 | 2021/02/09 |
ggg | 296 | 1 | 2021/02/09 |
ggg | 297 | 0 | 2021/02/09 |
ggg | 297 | 0 | 2021/02/09 |
ggg | 297 | 0 | 2021/02/09 |
lll | 296 | 1 | 2021/02/08 |
lll | 296 | 1 | 2021/02/08 |
lll | 296 | 2 | 2021/02/08 |
lll | 296 | 1 | 2021/02/08 |
lll | 296 | 1 | 2021/02/08 |
lll | 296 | 2 | 2021/02/08 |
kkk | 299 | 1 | 2021/02/08 |
jjj | 298 | 1 | 2021/02/08 |
iii | 295 | 2 | 2021/02/08 |
ggg | 297 | 1 | 2021/02/08 |
ggg | 297 | 1 | 2021/02/08 |
fff | 253 | 1 | 2021/02/08 |
eee | 249 | 1 | 2021/02/08 |
ddd | 249 | 1 | 2021/02/08 |
ccc | 215 | 1 | 2021/02/08 |
bbb | 223 | 1 | 2021/02/08 |
aaa | 139 | 1 | 2021/02/08 |
lll | 298 | 1 | 2021/02/08 |
lll | 298 | 2 | 2021/02/08 |
kkk | 299 | 1 | 2021/02/08 |
jjj | 299 | 1 | 2021/02/08 |
iii | 297 | 2 | 2021/02/08 |
ggg | 298 | 1 | 2021/02/08 |
ggg | 298 | 1 | 2021/02/08 |
fff | 254 | 1 | 2021/02/08 |
eee | 250 | 1 | 2021/02/08 |
ddd | 250 | 1 | 2021/02/08 |
ccc | 216 | 1 | 2021/02/08 |
bbb | 224 | 1 | 2021/02/08 |
aaa | 140 | 1 | 2021/02/08 |
lll | 300 | 0 | 2021/02/04 |
ggg | 299 | 1 | 2021/02/04 |
fff | 255 | 2 | 2021/02/03 |
eee | 251 | 2 | 2021/02/03 |
ddd | 251 | 1 | 2021/02/03 |
bbb | 225 | 1 | 2021/02/03 |
fff | 257 | 1 | 2021/02/03 |
eee | 253 | 2 | 2021/02/03 |
ccc | 217 | 2 | 2021/02/03 |
aaa | 141 | 1 | 2021/02/03 |
該当のソースコード
aaaの備品個数に相当する数はaaaの右隣に位置しているためoffset関数を用いて表示しました。
以下が該当のコードです。
import openpyxl as px wb = px.load_workbook('出庫履歴の表.xlsx') ws = wb["Sheet1"] B2_COL = 1 B8_ROW = 1 E2_COL = 9 E6_ROW = 137 # 範囲データを順次処理 for row in ws.iter_rows(min_col=B2_COL, min_row=B8_ROW, max_col=E2_COL, max_row=E6_ROW): for cell in row: # 該当セルの値取得 cell_value = cell.value o = cell.offset(0, 1) offset = o.value # セル範囲内に該当の文字列が存在する場合表示 if str('aaa') in str(cell_value): print(offset) # ロードしたExcelファイルを閉じる wb.close()
試したこと
pandasのdataframeに日付同士を比較できるものがないか自分なりに調べてもヒットしませんでした。
回答2件
あなたの回答
tips
プレビュー