データフレーム内のすべての列の最大最小行を見つけようとしています。どこから始めればいいのかわからない。私が考えるdf.groupby
にagg
、私は、全体の行を必要とするので、文句を言わない仕事。
これがサンプルデータです
import pandas as pd
df = pd.DataFrame(
{'A': array([4, 9, 2, 3, 3, 5, 7, 0, 4, 6]),
'B': array([4, 2, 4, 8, 4, 3, 1, 6, 9, 2]),
'C': array([8, 1, 8, 1, 2, 2, 7, 5, 9, 8]),
'D': array([9, 4, 2, 8, 0, 3, 6, 9, 3, 8])}
)
予想されるアウトアウト
A B C D
1 A max 9 2 1 4
7 A min 0 6 5 9
8 B max 4 9 9 3
6 B min 7 1 7 6
8 C max 4 9 9 3
1 C min 9 2 1 4
0 D max 4 4 8 9
4 D min 3 4 2 0
同じ最小/最大値を持つ複数の行がある場合、それらのいずれかを返しても問題ありません。
PS:元のインデックスを保持したいのですが。
レッツ・トライagg
でidxmin, idxmax
、その後、merge
:
out=(df.agg(['idxmin','idxmax']).unstack().reset_index(name='idx')
.merge(df, left_on='idx', right_index=True, how='left')
)
出力(idx
元のインデックスです):
level_0 level_1 idx A B C D
0 A idxmin 7 0 6 5 9
1 A idxmax 1 9 2 1 4
2 B idxmin 6 7 1 7 6
3 B idxmax 8 4 9 9 3
4 C idxmin 1 9 2 1 4
5 C idxmax 8 4 9 9 3
6 D idxmin 4 3 4 2 0
7 D idxmax 0 4 4 8 9
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加