首页 > 解决方案 > 如何在熊猫中将列中值的出现百分比获取到新列中

问题描述

我有一个看起来像这样的数据框:

import pandas as pd
foo = pd.DataFrame({'id':[1,1,2,2], 'val':[1,1,1,0]})

我想创建一个新列,其百分比val == 1id

生成的数据框应如下所示:

foo = pd.DataFrame({'id':[1,1,2,2], 'val':[1,1,1,0], 'percentage':[1,1,0.5,0.5})

任何想法我该怎么做?

标签: pythonpython-3.xpandas

解决方案


如果只有0,1值可以mean用于GroupBy.transform新列:

foo['percentage'] = foo.groupby('id')['val'].transform('mean')
print (foo)
   id  val  percentage
0   1    1         1.0
1   1    1         1.0
2   2    1         0.5
3   2    0         0.5

如果需要 in 中的任何值,val请首先比较Series.eq

foo['percentage'] = foo['val'].eq(1).groupby(foo['id']).transform('mean')

推荐阅读