Python 将字典追加到dict键与某个df行值匹配的数据帧中

Python 将字典追加到dict键与某个df行值匹配的数据帧中,python,pandas,Python,Pandas,我有一个数据框架和字典,如下所示: df = name characteristic value bob job doctor bob age 25 jim job doctor jim age 25 jim height 6' mydict = { 'bob': 10, 'jim

我有一个数据框架和字典,如下所示:

df = 
    name    characteristic  value 
    bob     job             doctor 
    bob     age             25
    jim     job             doctor
    jim     age             25
    jim     height          6'

mydict = { 'bob': 10, 'jim': 4 }
字典描述了具有特定名称的所有行的乘数值

我想计算这个数据帧中重复的特征和值对的数量,但随后为该计数提供一个乘数值,其中乘数就是我字典中的值

我试图获取的数据帧如下所示:

df = 
    name    characteristic  value     count   multiplier  total
    bob     job             doctor    2       10          20
    bob     age             25        2       10          20
    jim     job             doctor    2       4           8
    jim     age             25        2       4           8
    jim     height          6'        1       4           4

我能够生成count列,但完全无法将字典附加到数据帧中。如何使用原始df和字典在上面显示的最终数据帧中创建乘数列?

我已经为您详细介绍了以下步骤:

  • 使用
    groupby
    +
    transform
    获取值的计数-

    df['count'] = df.groupby('value').value.transform('count')
    
  • 使用
    pd.Series.map
    将名称映射到乘数-

    df['multiplier'] = df['name'].map(mydict)
    

    在旧版本中,您可以考虑<代码> df [乘法器]=df [名称]。代替(MyDICT)< /Cord>。

  • 最后,计算总数,这很简单

    df['total'] = df['count'] * df['multiplier']
    

  • 标记用于表示所引用的语言或库。标题中不需要它们。@jpp如果我省略列访问器,它将复制数据帧中每列的计数(我只需要一个,我可以选择其中任何一个;))谢谢@COLDSPEED的帮助。是否有其他方法可以实现map的功能?我使用的是熊猫的旧版本,地图不可用。。。我一直在使用版本0.10,不幸的是,我没有办法解决这个问题。@bwrbbit看看是否
    df['multiplier']=df['name'].replace(mydict)
    有效。@bwrbbit那里有一些古老的熊猫。@bwrbbit最近版本的熊猫为相同的例程提供了更好的性能。问问你的老板他们是否能对这个版本做些什么。
    df    
      name characteristic   value  count  multiplier  total
    0  bob            job  doctor      2          10     20
    1  bob            age      25      2          10     20
    2  jim            job  doctor      2           4      8
    3  jim            age      25      2           4      8
    4  jim         height      6'      1           4      4