繁体   English   中英

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

[英]Searching value in a dataframe and then putting corresponding value from dictionary in a new coloumn

我有一个带有一列名称的数据框,我还有另一个字典,该字典以名称作为键和与之相关的值。我想在数据框中搜索一个名称,并在字典中添加一个对应的新列。

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 

在第一部分中,使用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

要删除频率== 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM