我有數據框,我想在其中標識每行的列,該列具有與條件相對應的第一個值。在下面的例子中,我想創建一個新列,它標識每行中小于或等于 1 的第一個值,并給出相應的列名稱。df = pd.DataFrame({'A': [1.5,2,4,0.5], 'B' : [2,1,3,0.25], 'C': [3,1,1,1], 'D': [2,2,3,1]})df A B C D0 1.5 2.00 3 21 2.0 1.00 1 22 4.0 3.00 1 33 0.5 0.25 1 1我可以創建一個面具來檢查情況。temp = df<=1temp A B C D0 False False False False1 False True True False2 False False True False3 True True True True然后我可以使用以下內容來確定列。df['New_col'] = temp.idxmax(axis = 1)df A B C D New_col0 1.5 2.00 3 2 A1 2.0 1.00 1 2 B2 4.0 3.00 1 3 C3 0.5 0.25 1 1 A該代碼正確識別了 New_col 中的列(第 0 行除外),因為第 0 行中的所有值都大于 1。如何為 New_col 中的第 0 行獲取 NaN 而不是 A?以下是所需的輸出。 A B C D New_col0 1.5 2.00 3 2 NaN1 2.0 1.00 1 2 B2 4.0 3.00 1 3 C3 0.5 0.25 1 1 A
1 回答

ITMISS
TA貢獻1871條經驗 獲得超8個贊
用于檢查行上any(1)是否有 a并進行屏蔽:Truewhere
df['New_col'] = temp.idxmax(axis = 1).where(temp.any(1))
輸出:
A B C D New_col
0 1.5 2.00 3 2 NaN
1 2.0 1.00 1 2 B
2 4.0 3.00 1 3 C
3 0.5 0.25 1 1 A
添加回答
舉報
0/150
提交
取消