Creating a Conditional Column: If-Elif-Else in Pandas
給定的問題要求將新列新增至DataFrame 中基於一系列條件標準。挑戰在於在實現這些條件的同時保持程式碼效率和可讀性。
使用函數應用程式的解決方案
一種方法涉及創建一個將每一行映射到所需結果的函數基於條件:
def f(row):
if row['A'] == row['B']:
return 0
elif row['A'] > row['B']:
return 1
else:
return -1
df['C'] = df.apply(f, axis=1)
此方法可讀且易於實現,但它不是向量化的,可能會導致大型資料集的效能問題。
向量化解決方案
為了提高效率,建議使用NumPy 的np.where 函數的向量化方法:
df['C'] = np.where(
df['A'] == df['B'], 0, np.where(
df['A'] > df['B'], 1, -1))
= np.在哪裡(
df['A'] == df['B'], 0, np.where(
df['A'] > df['B'], 1, -1))此操作在 DataFrame 上按元素執行條件選擇,從而產生具有所需值的新列。 與基於函數的方法相比,這種向量化方法具有顯著的效能優勢。它還允許更簡潔和可讀地實現條件標準。 免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3