2017-12-18 192 views
0

我有一个数据框,它有一列名称。我有另一个字典,其名称为键和值与它关联。我想搜索一个在数据框中输入名称并在字段中添加相应的值。在数据框中搜索值,然后将字典中相应的值放入新的颜色

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

好的,太棒了。你的数据在哪里?为什么不是你的问题?请提供[mcve]。 –

+0

对不起,我是新来的论坛 –

+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 

使用DROP行频率== 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 
相关问题