我有一个名称列的数据框。我有另一个字典,其名称为键和与之关联的值。我想在数据框中搜索名称,并在新的列表中添加字典中的相应值。
my dictionary
fruits={'mango':1,'apple':2,'guava':0,'nut':1}
my dataframe
Fruit
mango
apple
guava
nut
预期产出
Fruit Frequency
mango 1
apple 2
guava 0
nut 1
数据框已经存在。我只想用相应的元素
映射值此外,如果我的词典具有比原始数据帧更多的键值对,我如何将键和相应的值添加到数据帧。
假设我的数据帧是
Fruit
mango
apple
现在我想要坚果而不是番石榴,因为它的价值为0
所以期望的输出是
Fruit Count
mango 1
apple 2
nut 1
答案 0 :(得分:0)
对于第一部分,请使用map
/ replace
-
df
Fruit
0 mango
1 apple
2 guava
3 nut
df['Frequency'] = df.Fruit.map(fruits)
df['Frequency'] = df.Fruit.replace(fruits) # alternative to map
df
Fruit Frequency
0 mango 1
1 apple 2
2 guava 0
3 nut 1
对于第二部分,您可以执行设置差异并与原始 -
连接df
Fruit
mango
apple
i = df.Fruit
j = pd.Series(list(set(fruits.keys()).difference(i)))
df = pd.concat([i, j], ignore_index=True).to_frame('Fruit')
df
Fruit
0 mango
1 apple
2 nut
3 guava
要删除Frequency == 0的行,请使用布尔索引 -
df
Fruit Frequency
0 mango 1
1 apple 2
2 guava 0
3 nut 1
df = df[df.Frequency.gt(0)]
df
Fruit Frequency
0 mango 1
1 apple 2
3 nut 1
或者,使用eval
/ query
。
df.query("Frequency > 0")
Fruit Frequency
0 mango 1
1 apple 2
3 nut 1