我想知道当我从网络抓取中获取信息时如何动态地更改列的值。
目前,我有这样的事情:
number name
12 NA
13 NA
14 NA
15 NA
我想收到这样的东西:
number name
12 Mike
13 Bob
14 Bobby
15 Mark
我尝试使用以下方法:
for number in phone_book:
name = get_name()
phonebook['names'][number] = name
和
phonebook.loc[phonebook.index[number], 'name'] = name
但是它只是为所有数字设置了最后一个数字的名称:
number name
12 Mark
13 Mark
14 Mark
15 Mark
如何获得将每个名称添加到其各自编号的方法?
谢谢
答案 0 :(得分:2)
从您的网上留言中,您可以构建一个看起来像这样的字典:
name = {12: 'Mike', 13: 'Bob', 14: 'Bobby', 15: 'Mark'}
然后您可以映射到现有框架:
df['name']=df['number'].map(name)
df = df.set_index('number')
print(df)
number name
12 Mike
13 Bob
14 Bobby
15 Mark
答案 1 :(得分:0)
您有几种方法可以做到,首先像@Quang Hoang评论:
phonebook.loc[phonebook.number == number, 'names'] = name
您也可以这样:
for number in phone_book:
name = get_name()
phonebook[phonebook["number"] == number] = name
或这样:
names = []
for number in phone_book:
names.append(get_name())
phonebook["name"] = names
请注意,首选方法是第一个。