如果我没有从我的数据库中找到某些数据,我该如何添加信息?

How could I add information if I did not find certain data from my database?

我正在使用 pandas 包根据名称从某个数据库中过滤出我需要的信息。但我只是知道如何过滤掉它们,而不是在我的结果列表中添加额外的信息。

我给出了一个列表,我想根据它们检索信息:

import pandas

require_list = []
with open('require.csv') as fo:
    for line in fo:
        require_list.append(line.strip())

#Then I see,
id 
cat
elephant          
dog           # I have elephant in my list.

然后我开始从我的数据库中读取数据 pandas:

data = pandas.read_csv("require_database.csv")

  id        kg    
0 squirrel  0.1
1 horse     80
2 cat       7
3 bee       0.03      
4 dog       12 
5 goldfish  0.08      # Unfortunately I do not have data for elephant.

然后我使用 "isin" 函数根据我给定的标题检索数据...

data_list = data[data['id'].isin(require_list)]
print data_list

# I'd like to get something like below....
 id        kg
 cat       7
 elephant  null   # Add "null" behind the elephant..
 dog       12     # Order is the same as my given list.

我的问题是如何在我没有动物数据的动物后面添加诸如 "null" 之类的信息?我的结果中的顺序应该与我的列表相同。有谁知道如何通过 pandas 实现这一目标?

我会从你的列表中创建一个 df,然后对你的数据库 df 执行 left style merge 这将在它们存在的地方添加值,并将 nan 放在它们不存在的地方:

In [52]:

animal_list=['cat','elephant','dog']
df = pd.DataFrame({'id':animal_list})
df
Out[52]:
         id
0       cat
1  elephant
2       dog

df1
Out[51]:
         id     kg
0  squirrel   0.10
1     horse  80.00
2       cat   7.00
3       bee   0.03
4       dog  12.00
5  goldfish   0.08
In [50]:

df.merge(df1, on='id', how='left')
Out[50]:
         id  kg
0       cat   7
1  elephant NaN
2       dog  12