次の列を持つデータフレームがあります。
日付 | Zip | 価格 | |
---|---|---|---|
0 | 2019-01-01 | 90102 | 58.02 |
1 | 2019-01-01 | 90102 | 81.55 |
2 | 2019-01-01 | 90102 | 11.97 |
3 | 2019-01-01 | 90102 | 93.23 |
4 | 2019-01-01 | 90103 | 13.68 |
そのzipとその日付の最大価格に基づいた価格の比率を持つ必要がある4番目の列を作成したいと思います。
だから私はdf_max_priceと呼ばれる別のdfを使用しました
df_max_price = df.groupby(['Date','Zip'], as_index=False)['Price'].max()
日付 | Zip | 価格 | |
---|---|---|---|
0 | 2019-01-01 | 90102 | 93.23 |
1 | 2019-01-01 | 90103 | 13.68 |
ここで、dfに新しい列を作成します。これは、その日付と郵便番号の価格と最大価格の比率になります。
日付 | Zip | 価格 | 比 | |
---|---|---|---|---|
0 | 2019-01-01 | 90102 | 58.02 | 0.622 |
1 | 2019-01-01 | 90102 | 81.55 | 0.875 |
2 | 2019-01-01 | 90102 | 11.97 | 0.128 |
3 | 2019-01-01 | 90102 | 93.23 | 1.000 |
4 | 2019-01-01 | 90103 | 13.68 | 1.000 |
計算は、などに基づいて58.02/93.23
います。
誰かがラムダ関数を使用してそれを行う方法を示すのを手伝ってもらえますか?
使用groupby
してtransform
df['ratio'] = df['Price'] / df.groupby(['Date','Zip'], as_index=False)['Price'].transform('max')['Price']
Date Zip Price ratio
0 2019-01-01 90102 58.02 0.622332
1 2019-01-01 90102 81.55 0.874718
2 2019-01-01 90102 11.97 0.128392
3 2019-01-01 90102 93.23 1.000000
4 2019-01-01 90103 13.68 1.000000
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加