我創建了一個函式 - 一組條件,如果條件滿足或不滿足,它回傳 1 / 0。
avg_ActivityScore = company['ActivityScore'].median()
min_EmployeeLowerBound = 10
list_LegalFormIDs = [112, 121, 301, 118, 141, 703, 111, 705, 921, 117, 361, 391, 711]
min_CompaniesCount = 10
def flag_company(df):
if (df['ActivityScore'] >= avg_ActivityScore):
return 1
elif (df['EmployeeLowerBound'] >= min_EmployeeLowerBound):
return 1
elif (df['LegalFormID'].isin(list_LegalFormIDs)):
return 1
else:
return 0
然后我在 DataFrame 上應用該函式,如下所示:
df['Flag'] = df.apply(flag_company, axis = 1)
但是,它回傳錯誤訊息 - int' 物件沒有屬性 'isin'。請問有什么想法可以改變以保持功能嗎?
如果我使用下面的代碼,它可以正常作業:
df.loc[df['LegalFormID'].isin(list_LegalFormIDs)]
非常感謝!
uj5u.com熱心網友回復:
在 中使用標量DataFrame.apply,因此不能對 使用函式Series,因為df['LegalFormID']函式內部是標量:
def flag_company(df):
print (df['ActivityScore'])
if (df['ActivityScore'] >= avg_ActivityScore):
return 1
elif (df['EmployeeLowerBound'] >= min_EmployeeLowerBound):
return 1
#check scalar by in
elif (df['LegalFormID'] in list_LegalFormIDs):
return 1
else:
return 0
使用的矢量化解決方案Series是:
m1 = df['ActivityScore'] >= avg_ActivityScore
m2 = df['EmployeeLowerBound'] >= min_EmployeeLowerBound
m3 = df['LegalFormID'].isin(list_LegalFormIDs)
df['Flag'] = (m1 | m2 | m3).astype(int)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/414804.html
標籤:
