python - 将字典附加到数据框中,其中字典键与某些 df 行值匹配

标签 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': 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

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

最佳答案

我已经为您分解了步骤:

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

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

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

    在旧版本上,您可以考虑使用df['multiplier'] = df['name'].replace(mydict)

  3. 最后,计算总数,这很简单。

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

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

关于python - 将字典附加到数据框中,其中字典键与某些 df 行值匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49201301/

相关文章:

Python:二维数组的argsort按降序排列?

python - 提高多段落扫描的 OCR 性能

python - 在Python中打印引号

python - 检查 Pandas 中的单个单元格值是否为 NaN

python - Pandas 重采样 : TypeError: Only valid with DatetimeIndex, TimedeltaIndex 或 PeriodIndex,但得到了 'RangeIndex' 的实例

python - 如何在数据帧上使用 sort_index()?

python - 防止从子类访问实例变量,而不影响基类

python - 在 mongodb 中查询大列表的最快方法

python - 删除特定行 Pandas 数据框上方的所有行

python - 有效地将大型 Pandas 数据框转换为列表