前提・実現したいこと
python3.8でExcelの出庫履歴表からひと月で備品が種類ごとに合計何個になっているかを表す月末決算表を作ろうとしています。
現在データを備品ごとに分けた状態でその中での最小値を取り出しています。
しかしよくよく考えてみると備品が途中入荷されることも考えられるため種類ごとに分けたデータ中の最小だとつじつまが合わなくなるケースが出てくることに気が付きました。(うかつでした。)
上記を種類ごとに分けたデータを時系列ごとにまとめてその中で最新のデータを取り出して月末決算.xlsxに記入する形で改良したいと思っております。
python初心者のため,お力を貸していただければ幸いです。
↓出庫履歴の表.xlsx
備品名 | 備品個数 | 消費個数 | 日付 |
---|---|---|---|
lll | 300 | 0 | 2021/02/04 |
iii | 299 | 1 | 2021/02/04 |
ggg | 299 | 1 | 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 |
発生している問題・エラーメッセージ
上記にもあるように,最新のデータではなく最小の値を取り出している状態なため追加入荷等があれば入荷後の備品個数がわからなくなってしまいます。
なので以下のコードを試してみたところ,sum()がついているため合計してしまいます。
import pandas as pd import openpyxl as px df = pd.read_excel('出庫履歴の表.xlsx', sheet_name='Sheet1') Aall = df[df['備品名'].values == 'aaa'].groupby(['日付']).sum().drop(['消費個数'], axis=1) Ball = df[df['備品名'].values == 'bbb'].groupby(['日付']).sum().drop(['消費個数'], axis=1) Call = df[df['備品名'].values == 'ccc'].groupby(['日付']).sum().drop(['消費個数'], axis=1) Dall = df[df['備品名'].values == 'ddd'].groupby(['日付']).sum().drop(['消費個数'], axis=1) Eall = df[df['備品名'].values == 'eee'].groupby(['日付']).sum().drop(['消費個数'], axis=1) Fall = df[df['備品名'].values == 'fff'].groupby(['日付']).sum().drop(['消費個数'], axis=1) Gall = df[df['備品名'].values == 'ggg'].groupby(['日付']).sum().drop(['消費個数'], axis=1) Hall = df[df['備品名'].values == 'hhh'].groupby(['日付']).sum().drop(['消費個数'], axis=1) Iall = df[df['備品名'].values == 'iii'].groupby(['日付']).sum().drop(['消費個数'], axis=1) Jall = df[df['備品名'].values == 'jjj'].groupby(['日付']).sum().drop(['消費個数'], axis=1) Kall = df[df['備品名'].values == 'kkk'].groupby(['日付']).sum().drop(['消費個数'], axis=1) Lall = df[df['備品名'].values == 'lll'].groupby(['日付']).sum().drop(['消費個数'], axis=1) Mall = df[df['備品名'].values == 'mmm'].groupby(['日付']).sum().drop(['消費個数'], axis=1) print(Aall) print(Ball) print(Call) print(Dall) print(Eall) print(Fall) print(Gall) print(Hall) print(Iall) print(Jall) print(Kall) print(Lall) print(Mall)
備品個数 日付 2021/02/03 141 備品個数 日付 2021/02/03 225 備品個数 日付 2021/02/03 217 備品個数 日付 2021/02/03 251 備品個数 日付 2021/02/03 504 備品個数 日付 2021/02/03 512 備品個数 日付 2021/02/04 598 Empty DataFrame Columns: [備品個数] Index: [] 備品個数 日付 2021/02/04 299 Empty DataFrame Columns: [備品個数] Index: [] Empty DataFrame Columns: [備品個数] Index: [] 備品個数 日付 2021/02/04 300 Empty DataFrame Columns: [備品個数] Index: []
sum()を外すと以下のようなエラーメッセージが出てきました。
raise AttributeError( AttributeError: 'DataFrameGroupBy' object has no attribute 'drop'
お時間あればお力添えいただければと思います。
あなたの回答
tips
プレビュー