1. ホーム
  2. python

[解決済み] パンダの週ごとのグループ

2023-06-09 14:37:53

質問

このようなデータフレームを持っています。

Name   Date    Quantity
Apple  07/11/17  20
orange 07/14/17  20
Apple  07/14/17  70
Orange 07/25/17  40
Apple  07/20/17  30

で集計したい。 NameDate で数量の和を求める 詳細は

日付 : グループ、結果は週の初め(またはちょうど月曜日)であるべきです。

数量 : 同じ名前と日付のレコードが2つ以上ある場合、その合計(同じ間隔にある場合)

目的の出力は以下のようになります。

Name   Date    Quantity
Apple  07/10/17  90
orange 07/10/17  20
Apple  07/17/17  30
orange 07/24/17  40

ありがとうございました。

どのように解決するのですか?

最初の変換列 date to_datetime で、1週間分を差し引きます。これは、その日付の前の週ではなく、その日付の前の週の合計を求めるからです。

次に groupby Grouper W-MON と集合体 sum :

df['Date'] = pd.to_datetime(df['Date']) - pd.to_timedelta(7, unit='d')
df = df.groupby(['Name', pd.Grouper(key='Date', freq='W-MON')])['Quantity']
       .sum()
       .reset_index()
       .sort_values('Date')
print (df)
     Name       Date  Quantity
0   Apple 2017-07-10        90
3  orange 2017-07-10        20
1   Apple 2017-07-17        30
2  Orange 2017-07-24        40