質問: Book1.csvに以下のファイルが入っています。 品番毎で0が連続して続いた回数の最大値を抽出したいです。 日付 品番 在庫 11-1 A 101 11-1 B 81 11-3 B 0 11-5 A 0 11-7 A 0 11-10 A 0 11-11 B 95 11-17 A 0 11-22 A 0 11-27 A 0 12-10 A 0 12-11 B 0 12-17 B 0 上記の場合だと 品番 0の連続最大値 A 7 B 2 ・ ・ ・ ・ ・ ・ みたいな形にしたいです。 groupbyを活用した方法でご教示をお願いしたいです。
回答: pandasで連続値をカウントする https://qiita.com/Masutani/items/3cea640da7d1f5f58af1 ``` import io import pandas as pd data = """ 日付,品番,在庫 11-1,A,101 11-1,B,81 11-3,B,0 11-5,A,0 11-7,A,0 11-10,A,0 11-11,B,95 11-17,A,0 11-22,A,0 11-27,A,0 12-10,A,0 12-11,B,0 12-17,B,0 """ df = pd.read_csv(io.StringIO(data), index_col=0) df_a = df.copy() df_a.query("品番=='A'", inplace=True) df_a['カウント'] = df_a.groupby((df_a['在庫'] != df_a['在庫'].shift()).cumsum()).cumcount() + 1 df_a[df_a['在庫'] == 0]['カウント'].max() ```