Reputation: 21
I would like to know how I can change the values of a column dynamically as I grab the information from a web scrape.
Currently, I have something like this:
number name
12 NA
13 NA
14 NA
15 NA
and I would like to receive something like this:
number name
12 Mike
13 Bob
14 Bobby
15 Mark
I have tried using this:
for number in phone_book:
name = get_name()
phonebook['names'][number] = name
and
phonebook.loc[phonebook.index[number], 'name'] = name
but it just sets the name of the last number for all:
number name
12 Mark
13 Mark
14 Mark
15 Mark
How could I get it to add each name to its respective number?
Thanks
Upvotes: 2
Views: 2574
Reputation: 7222
From your web scrape you could build a dict that looks like this:
name = {12: 'Mike', 13: 'Bob', 14: 'Bobby', 15: 'Mark'}
Then you can map to your existing frame:
df['name']=df['number'].map(name)
df = df.set_index('number')
print(df)
number name
12 Mike
13 Bob
14 Bobby
15 Mark
Upvotes: 2
Reputation: 2569
You have several way to do it, first like @Quang Hoang comment :
phonebook.loc[phonebook.number == number, 'names'] = name
You can also do like this :
for number in phone_book:
name = get_name()
phonebook[phonebook["number"] == number] = name
or like this :
names = []
for number in phone_book:
names.append(get_name())
phonebook["name"] = names
Note that the prefered method is the first one.
Upvotes: 0