亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

比較兩列值并根據比較再創建 2 列

比較兩列值并根據比較再創建 2 列

精慕HU 2021-10-05 15:44:04
我有一個 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'])]


查看完整回答
反對 回復 2021-10-05
?
湖上湖

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


查看完整回答
反對 回復 2021-10-05
  • 2 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號