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

2024-05-15 01:03:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dataframe,它有一列名称。我有另一个dictionary,它将名称作为键和与之关联的值。我想在dataframe中搜索一个名称,并将dictionary中相应的值添加到新的列中。你知道吗

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 

Tags: 数据名称元素appledataframedictionarymy键值
1条回答
网友
1楼 · 发布于 2024-05-15 01:03:16

对于第一部分,使用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

相关问题 更多 >

    热门问题