あるい指標について最大であるときの別の指標の値を取り出す、例えば、「信号強度(intensity)が最大になる角度(elevation)」をDataFrame から取り出すことを考えます。
import pandas as pd
df = pd.DataFrame({'elevation': [45.0, 60.0, 75.0, 90.0], \
'intensity': [10.0, 11.1, 12.3, 10.0]})
print(df["intensity"].loc[df.idxmax()]["elevation"])
結果は 75.0 とでるはずです。
- idxmax(), idxmin() で最大、最小になる各列のindex を取得できる
- このプログラムでは、DataFrame の index が文字列でも動きます。
df = pd.DataFrame({'elevation': [45.0, 60.0, 75.0, 90.0],\
'intensity': [10.0, 11.1, 12.3, 10.0]},\
index=['a', 'b', 'c', 'd'])
何度も同じことをググっているのでメモしました。(2020/07/10)
その後
-
idxmax()
を使うときのDataFrame の Seriesにstr があるとエラーになります。上記のコードでもともとは
print(df.loc[df.idxmax()["intensity"]]["elevation"])
としていたところをprint(df.loc[df["intensity"].idxmax()]["elevation"])
に修正しました。これだとDataFrame のうち、float32である"intensity"の列だけで最大を求めるので、他の列にstr や bool などがあっても大丈夫です。 (2020/07/18)