假设我有以下数据集
df_dict = ({'unit' : [1, 1, 1, 2, 2, 2], 'cat' : [1, 2, 3, 1, 2, 4],
'count' : [8, 3, 2, 2, 8, 7] })
df = pd.DataFrame(df_dict)
df.set_index('unit', inplace = True)
看起来像这样:
^{pr2}$计数给出了在一个单元中观察到的不同类别的频率。 我想得到的是每个单元四个类别的累计频率。注意,1号机组缺少4类机组,2号机组缺少3号机组。在
因此,最终结果将是
对于1号机组:
[8/13, 11/13, 13/13, 13/13]
对于2号机组:
[2/17, 10/17, 10/17, 17/17]
我知道如何用groupby
和cumsum
来获得累计和,但是例如,单元1没有缺少类别4的值。在
谢谢你的时间!在
收益率
^{pr2}$我真的不知道该如何解释这个解决方案,可能是因为我有点偶然。灵感 来自Jeff's solution,它使用
将值与索引相关联。一旦你把累计计数(值),例如[8,11,13],与
cat
个数字(索引)相关联,例如[1,2,3],你就基本上没有家了。剩下的只是unstack、fillna、div和{a5}的标准应用程序。在相关问题 更多 >
编程相关推荐