迭代地将输出保存在pandas数据框架中



我的数据集包含一个列,我想在for循环中检查这些列的名称:

Name      Age
John      32
Luke      23
Christine  54
Mary      39
AnneMarie  42
Eoin      23

我需要通过一个生成一对('name', score)的网站来检查它们,其中score是一个数字。这对来自以下代码(它不能工作,因为它被提取只是为了显示我如何获得我想在我的数据框中的数据)

for name in df['Name']: 
# missing code
for c in zip(names, scores):
print(c)

例如,当name = John,c给出以下输出:

('Julie', 6.7)
('Michael', 3.4)
('John John', 3.1)
('Ludo', 3.0)
('Chris', 3.0)

name = Luke,c给出以下输出:

('Mary', 2.7)
('Michael', 2.1)
('Bill', 3.5)
('Jess', 3.2)

等等

我想在我的数据框架中添加这些信息,以便有这样的东西:

Name      Age                  Friends                        Score

John      32     [Julie, Michael, John John, Ludo, Chris]  [6.7, 3.4, 3.1, 3.0, 3.0]
Luke      23     [Mary, Michael, Bill, Jess]               [2.7,2.1, 3.5, 3.2]
Christine  54
Mary      39
AnneMarie  42         ....
Eoin      23

我将感谢您在这方面的帮助,关于如何通过使用Name列中的每个名称的结果c来获得类似的数据框架。

尝试:

# add index here
for idx,name in df['Name'].iteritems(): 
# missing code
for c in zip(names, scores):
print(c)
df.loc[idx, 'Friends'] = names
df.loc[idx, 'Score'] = scores

或者你可以更好地聚合所有的名称和分数,并在for循环后赋值一次:

# initialization
name_lists, score_lists = [], []
for name in df['Name']: 
# missing code
for c in zip(names, scores):
print(c)
name_lists.append(names)
score_lists.append(scores)
# update the data frame
df['Friends'] = name_lists
df['Score'] = score_lists

对于不太大的数据帧,后一段代码比前一段稍微快一些。对于较大的数据帧,重复执行append会非常慢。

最新更新