我正在尝试从一些先前进行分组和加权的数据开始构建频率直方图。 参见此DataFrame作为示例:
d = {'category': ['red', 'green', 'blue', 'red', 'green'], 'count': [1, 2, 3, 1, 3], 'average': [3.2, 5.3, 8.1, 4.3, 9.0]}
df = pd.DataFrame(data=d)
我需要考虑那些权重(计数列),例如计数> 1的行,应该在频率直方图中多次考虑。因此简单
df.hist('average')
还不够,因为它会使计数数据变平。
一种可能的解决方案是按照计数列重复行,如下所示:Duplicate row based on value in different column
但是我发现此解决方案效率不高。
还有其他(更容易的)方法来实现这一目标吗?
答案 0 :(得分:0)
我们有repeat
df.loc[df.index.repeat(df['count'])] # df.reindex[df.index.repeat(df['count'])]
Out[424]:
category count average
0 red 1 3.2
1 green 2 5.3
1 green 2 5.3
2 blue 3 8.1
2 blue 3 8.1
2 blue 3 8.1
3 red 1 4.3
4 green 3 9.0
4 green 3 9.0
4 green 3 9.0