gpt4 book ai didi

python - 使用列表读取 Pandas 中的列以创建新的分类列

转载 作者:太空宇宙 更新时间:2023-11-03 12:43:32 24 4
gpt4 key购买 nike

我有一列看起来像这样的字符串

col_1
Spiderman
Abe Lincoln
Superman
Ghandi
Jane Austin
Robert de Niro
Elon Musk
George Bush
Bill Gates
Barak Obama
Anne Frank

我手动浏览了该列并为这些字符制作了类别列表:

l1 = [ 'Abe Lincoln', 'George Bush', 'Barak Obama']
l2 = ['Spiderman', 'Superman']
l3 = ['AnneFrank', 'Ghandi']

我已经对这些列表做了口述

dict = {'l1': l1, 'l2': l2,'l3': l3} #and so on

我想做的是通过读取第 1 列创建一个新列,并根据 str(cell) 出现在哪个列表中返回一个数字;所以输出将是

 col_1            col2
Spiderman 2
Abe Lincoln 1
Superman 2
Ghandi 3
Jane Austin 4
Robert de Niro 4
Elon Musk 4
George Bush 1
Bill Gates 4
Barak Obama 1
Anne Frank 3

我只是不确定如何使用 if/else 在定义的函数中使用列表和字典,我什至不确定我是否需要字典,但我想我需要。

我试过类似的东西

def group(x, dict):
for key, value in dict:
if x in key:
return 1
else:
return 0

数据["组"] = data.col1.apply(组)

现在我知道上面的代码不会工作(因为它是无意义的)但是我之前使用过类似的函数来对性别列进行分类,但是,我似乎无法理解这个代码一。

一如既往,感谢您提供的任何帮助。

最佳答案

我认为您需要按字典循环并使用 Series.isin 设置 key 的值|用于检查成员资格 - 在示例数据中获取 NaN,因为在字典中缺少另一个值:

#not use python reserved word dict for variable name
d = {'l1': l1, 'l2': l2,'l3': l3}

for k, v in d.items():
df.loc[df['col_1'].isin(v), 'new'] = k
print (df)
col_1 new
0 spiderman l2
1 Abe Lincoln l1
2 superman l2
3 Ghandi l3
4 Jane Austin NaN
5 Robert de Niro NaN
6 Elon Musk NaN
7 George Bush l1
8 Bill Gates NaN
9 Barak Obama l1
10 Anne Frank NaN

关于python - 使用列表读取 Pandas 中的列以创建新的分类列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55165380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com