你知道是否可以用一個 def 在 2 列中回傳 2 個值?
我有這兩個定義:
def codeAcro (row):
NOVA, Concordance = row['Code'], row['Concordance']
if pd.isna(Concordance) == True:
return None
else:
return Concordance
ListeCodeNova['Acronyme'] = ListeCodeNova[['Concordance','Code']].apply(codeAcro, axis=1)
def codeNOVA (row):
NOVA, Concordance = row['Code'], row['Concordance']
if pd.isna(Concordance) == True:
return None
else:
return NOVA
ListeCodeNova['Concordance'] = ListeCodeNova[['Concordance','Code']].apply(codeNOVA, axis=1)
而且我想知道是否可以僅簡化一個定義。
uj5u.com熱心網友回復:
為了更好地避免使用 apply 方法(對每一行呼叫),并使用布爾索引來代替:
import pandas as pd
import numpy as np
df = pd.DataFrame({'Concordance':[1, np.nan, 2], 'Code':[10, 11,12]})
mask = df.Concordance.notna()
df['Acronyme'] = np.where(mask, df.Concordance, None)
df['Concordance'] = np.where(mask, df.Code, None)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/492279.html