比较两列值并根据比较再创建 2 列

我有一个 Pandas 数据框,我需要检查一个列值是否在另一列值中可用,并基于它再创建 2 个列。


我的数据框看起来像这样:


Dept-x  Country Age Category    Dept-y

Math    India   Young   Good    Math,Social,English,Science,French

Math    India   Adult   Good    Math,Social,English,Science,French

Social  Aus     Young   Average Science,Math,Social, English, French

Science Pak     Young   Good    Math,Social,English,Practical,French

Science Pak     Adult   Average Math,Social,Science,French,English

Science Pak     Adult   Good    Science,Math,Social, English, French

预期数据帧:


Top 3   Top all

1             1

1             1

0             1

0             0

1             1

1             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。


如果有人可以帮助我实现这一目标,我将不胜感激?



精慕HU
浏览 193回答 2
2回答

交互式爱情

你可以像这样使用列表理解: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'])]

湖上湖

我会尝试这样的事情吗?df['Top 3'] = 0df['Top all'] = 0df.loc[df['Dept-x'] in list(df['Dept-y']),'Top all']=1df.loc[df['Dept-x'] in list(df['Dept-y'])[:3],'Top 3','Top all']=1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python