在数据框中搜索值,然后将字典中的相应值放入新的coloumn中

时间:2017-12-18 13:14:54

标签: python pandas dictionary dataframe

我有一个名称列的数据框。我有另一个字典,其名称为键和与之关联的值。我想在数据框中搜索名称,并在新的列表中添加字典中的相应值。

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 

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