どのように集約し、GROUPBYするパンダのデータフレームを使用し、非集約/ GROUPBY列に持ち込みます

マシューDoering:

与えられました:

import pandas as pd

d = {'month': pd.Series(['jan', 'jan', 'feb', 'feb']),
     'week' : pd.Series(['wk1', 'wk2', 'wk1', 'wk2']),
     'high_temp' : pd.Series([10, 20, 30, 20]), 
     'low_temp' : pd.Series([4, 5, 23, 40])} 

df = pd.DataFrame(d)
df

    high_temp  low_temp month week
0         10         4   jan  wk1
1         20         5   jan  wk2
2         30        23   feb  wk1
3         20        40   feb  wk2

私は取得したいと思い、このデータと新しいデータフレームであります

    month    high_temp   high_temp_week  low_temp  low_temp_week
0   Jan         20            wk2           4          wk1
1   Feb         30            wk1           23         wk1

私は簡単に月ごとにグループ化されたタンの最大を得ることができますが、私は、最大値での行からの週のコラムを持参する方法を見つけ出すことはできません。

ben.t:

あなたはでそれを行うことができますsort_values場合によっては、drop_duplicatesその後、最初の最後に保ちますmergeあなただけの月にマージを行うと、あなたは、両方のデータフレームにある列の週の名前を変更するサフィックスを指定します。

new_df = df[['month', 'high_temp', 'week']].sort_values('high_temp').drop_duplicates('month', keep='last')\
            .merge(df[['month', 'low_temp', 'week']].sort_values('low_temp').drop_duplicates('month', keep='first'), 
                   on='month', suffixes=('_high_temp', '_low_temp'))

print (new_df)
  month  high_temp week_high_temp  low_temp week_low_temp
0   jan         20            wk2         4           wk1
1   feb         30            wk1        23           wk1

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=387360&siteId=1