我有一个带有A列的pandas df,它是一串字符串.系列中的每个项目(即数据库中的每一行)只是一个长字符串,以逗号分隔.我想创建一个名为B的新列,每次从A列的每一行中出现一个单独列表中的对象时,该列会递增计数.例如:
我的列表看起来像这样:
list = ('dog', 'bird', 'cat')
Run Code Online (Sandbox Code Playgroud)
我的数据框看起来像这样:
A B
dog, bird 2
cat, bird 2
dog, snake 1
cat, bird, snake 2
dog, bird, cat, snake 3
dog, bird cat 3
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个执行以下操作的嵌套循环:从df.a [0]开始(即df.A的第一个值),找出它是否包含列表的第一个值(即'dog') .如果df.A [0]包含,则将1添加到B.然后,保持在df.A的同一行中,继续到列表的第二个值(即'bird').如果df.A [0]也包含该值,则将另外1添加到B. etc等.
这是我正在尝试使用的代码.
for i in df['A']:
for j in list:
if i.str.contains(j):
df['B'] += 1
Run Code Online (Sandbox Code Playgroud)
但是,我一直收到错误:
'str' object has no attribute 'str'
Run Code Online (Sandbox Code Playgroud)
我如何告诉熊猫看整个系列,同时还告诉它作为一个具有上述结构的循环?或者,解决这个问题的最佳方法是什么?