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

问题描述 投票:0回答:1

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

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 
python pandas dictionary dataframe
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.