我有一個 Pandas 數據框,我需要檢查一個列值是否在另一列值中可用,并基于它再創建 2 個列。我的數據框看起來像這樣:Dept-x Country Age Category Dept-yMath India Young Good Math,Social,English,Science,FrenchMath India Adult Good Math,Social,English,Science,FrenchSocial Aus Young Average Science,Math,Social, English, FrenchScience Pak Young Good Math,Social,English,Practical,FrenchScience Pak Adult Average Math,Social,Science,French,EnglishScience Pak Adult Good Science,Math,Social, English, French預期數據幀:Top 3 Top all1 11 10 10 01 11 1因此,在預期的數據框中,除了現有的列之外,我們還需要添加兩列(即前 3 位和全部位居前列)。如果 Dept-x 的值在 Dept-y 的前 3 個值中可用,則 Top 3 和 Top all 的值都應為 1。如果 Dept-x 的值在前 3 個值中不可用,但存在于 Dept-y 中,則前 3 個值應為 0,Top all 應為 1。如果 Dept-x 的值在 Dept-y 中根本不可用,則 Top 3 和 Top all 的值都應為 0。如果有人可以幫助我實現這一目標,我將不勝感激?
2 回答

交互式愛情
TA貢獻1712條經驗 獲得超3個贊
你可以像這樣使用列表理解:
df['Top 3']=[1 if x in y.split(',')[:3] else 0 for x,y in zip(df['Dept-x'], df['Dept-y'])]
df['Top all']=[1 if x in y else 0 for x,y in zip(df['Dept-x'], df['Dept-y'])]

湖上湖
TA貢獻2003條經驗 獲得超2個贊
我會嘗試這樣的事情嗎?
df['Top 3'] = 0
df['Top all'] = 0
df.loc[df['Dept-x'] in list(df['Dept-y']),'Top all']=1
df.loc[df['Dept-x'] in list(df['Dept-y'])[:3],'Top 3','Top all']=1
添加回答
舉報
0/150
提交
取消