为了账号安全,请及时绑定邮箱和手机立即绑定

比较两列值并根据比较再创建 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 关注
  • 192 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号