简体   繁体   English

Pandas - 在 NaN 中添加新的字符串列结果

[英]Pandas - adding new string column results in NaN

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;我在 Pandas 数据框中分配新列时遇到了一些麻烦 - 我已经让它工作了,但想了解它为什么会发生;

When I first tried to assign the ID to a string, the result was NaN..当我第一次尝试将 ID 分配给一个字符串时,结果是 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..但是,如果我将 ID 分配向下移动一点,它会起作用..

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?有任何想法吗?

You can't add a scalar value.您不能添加标量值。 You have to enclose person into a list:您必须将person放入列表中:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM