循环遍历 Pandas 数据框以填充列表(Python)
Posted
技术标签:
【中文标题】循环遍历 Pandas 数据框以填充列表(Python)【英文标题】:Loop over Pandas dataframe to populate list (Python) 【发布时间】: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']]
【问题讨论】:
感谢您提供工作示例。 【参考方案1】:您可以在代码中添加一个 elif。使用remove 方法,您可以按值删除项目。请注意,您的人是一个列表,而不是一个字符串。我只是用 [0] 的索引来调用它。
elif df.at[i, 'action'] == 'exclude':
person = [df.at[i, 'names']]
participants.append(participants[-1].remove(person[0]))
【讨论】:
以上是关于循环遍历 Pandas 数据框以填充列表(Python)的主要内容,如果未能解决你的问题,请参考以下文章