我正在使用 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,然后执行 left款式merge对于您的数据库 df ,这将在它们存在的地方添加值,并将 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
关于python - 如果我没有从数据库中找到某些数据,如何添加信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28774310/