我的数据集包含一个列,我想在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
会非常慢。