特定のpandasデータフレームでは、行の最高位、2番目、3番目などの新しい列を作成したいと考えています。そして、それぞれの対応する列名用の別の列を作成します。以下のコードは、行の最大値に対してこれを行いますが、それに続く値は返しません。 Find the column name which has the maximum value for each rowpandasデータフレームの行の並べ替えと列IDの取得
import pandas as pd
df = pd.DataFrame({'A': (23, 24, 55, 77, 33, 66),
'B': (12, 33, 0.2, 44, 23.5, 66),
'C': (1, 33, 66, 44, 5, 62),
'D': (9, 343, 4, 64, 24, 63),
'E': (123, 33, 2.2, 42, 2, 99)})
# Determine the max value and column name and add as columns to df
df['Max1'] = df.max(axis=1)
df['Col_Max1'] = df.idxmax(axis=1)
# Determine the 2nd and 3rd max PR and threshold levels and add as columns
# ???????????
print(df)
から適応
これが生成します。
A B C D E Max1 Col_Max1
0 23 12.0 1 9 123.0 123.0 E
1 24 33.0 33 343 33.0 343.0 D
2 55 0.2 66 4 2.2 66.0 C
3 77 44.0 44 64 42.0 77.0 A
4 33 23.5 5 24 2.0 33.0 A
5 66 66.0 62 63 99.0 99.0 E
Process finished with exit code 0
唯一の注意点は、それがパフォーマンスのために重要な場合には、列の非常に大きな数を持つことが可能であるということでしょう。みんなありがとう。なり、パフォーマンスに焦点を当てた基本となる配列データを使用して
以下の回答を理解しようとする人にとって、私はnumpyのために「ファンシーインデックス」と呼ばれています。いい物。 – RaceFrog