Reputation: 376
I've had some trouble assigning a new column in a Pandas dataframe - I have got it working, but want to understand why it happens;
When I first tried to assign the ID to a string, the result was NaN..
df = pandas.json_normalize(data)
all_per = pandas.DataFrame()
for person in peopleList:
all_per['id'] = person
all_per['name'] = df['results.(id:'+person+').localizedFirstName'] + ' ' + \
df['results.(id:'+person+').localizedLastName']
Results:
id name
0 NaN Adam Smith
However if I move the ID assignment down a bit, it works..
df = pandas.json_normalize(data)
all_per = pandas.DataFrame()
for person in peopleList:
all_per['name'] = df['results.(id:'+person+').localizedFirstName'] + ' ' + \
df['results.(id:'+person+').localizedLastName']
all_per['id'] = person
Results:
name id
0 Adam Smith FQR4bL_80K
This took up a lot of my time, and I have no idea why it happened? Any ideas?
Upvotes: 1
Views: 860
Reputation: 120399
You can't add a scalar value. You have to enclose person
into a list:
df = pandas.json_normalize(data)
all_per = pandas.DataFrame()
for person in peopleList:
all_per['id'] = [person] # <- HERE
all_per['name'] = df['results.(id:'+person+').localizedFirstName'] + ' ' + \
df['results.(id:'+person+').localizedLastName']
Output:
>>> all_per
id name
0 FQR4bL_80K Adam Smith
Upvotes: 1