【发布时间】:2021-05-21 22:31:07
【问题描述】:
我有以下数据框:
import pandas as pd
action = ['include','exclude','ignore','include', 'exclude', 'exclude','ignore']
names = ['john','michael','joshua','peter','jackson','john', 'erick']
df = pd.DataFrame(list(zip(action,names)), columns = ['action','names'])
我也有一个这样的起始参与者列表:
participants = [['michael','jackson','jeremiah','martin','luis']]
我想迭代 df['action']。如果df['action'] == 'include',则将另一个列表添加到参与者列表中,其中包括所有以前的名称和 df['names'] 中的名称。因此,在第一次迭代之后,参与者列表应如下所示:
participants = [['michael','jackson','jeremiah','martin','luis'],['michael','jackson','jeremiah','martin','luis','john']]
我已经设法通过以下代码实现了这一点(我不知道这部分是否可以改进,尽管这不是我的问题):
for i, row in df.iterrows():
if df.at[i,'action'] == 'include':
person = [df.at[i,'names']]
old_list = participants[-1]
new_list = old_list + person
participants.append(new_list)
else:
pass
主要问题(我的问题是),我如何在df['action'] == 'exclude' 时完成相同但删除名称?所以,在第二次迭代之后,我应该在参与者中有这个列表:
participants = [['michael','jackson','jeremiah','martin','luis'],['michael','jackson','jeremiah','martin','luis','john'],['jackson','jeremiah','martin','luis','john']]
【问题讨论】:
-
感谢您提供工作示例。