python - pandas groupby 并且只变换一列
问题描述
我想分组并仅转换其中一个分组列。
假设我有这样的数据框:
dataf = pd.DataFrame({'question': ['q1', 'q1', 'q1', 'q2', 'q2', 'q2', 'q3', 'q3', 'q3']*10, 'value': [1,2,3,1,2,3,1,2,3]*10})
datafG = dataf.groupby(['question', 'value']).agg({'value': 'count'})
datafG['sum_n'] = datafG.groupby(['question']).transform('sum')
然后我想分组并获得计数列的比例,datafG / datafG.groupby(level=[0]).transform('sum')
但这会改变两者,我正在寻找一种方法来保持我的sum_n
列不变。
这给了我一个看起来像这样的df:
value sum_n
question value
q1 1 0.33 0.33
q1 2 0.33 0.33
q1 3 0.33 0.33
q2 1 0.33 0.33
q2 2 0.33 0.33
q2 3 0.33 0.33
q3 1 0.33 0.33
q3 2 0.33 0.33
q3 3 0.33 0.33
虽然我想要:
value sum_n
question value
q1 1 0.33 30
q1 2 0.33 30
q1 3 0.33 30
q2 1 0.33 30
q2 2 0.33 30
q2 3 0.33 30
q3 1 0.33 30
q3 2 0.33 30
q3 3 0.33 30
解决方案
推荐阅读
- python - 如果您尝试操作当前正在操作的对象,S3 会抛出什么异常?
- javascript - 我无法删除我的编辑个人资料表单中的空间
- python - 如何在 pandas 数据框中创建一个列来验证是否发生了状态转换?
- pandas - 我可以使用数据框作为函数的输入吗?
- css - 如何换行显示在使用引导表单控件和下拉类?
- c++ - 分而治之和算法
- html - 如何将 div 彼此相邻放置,在其他两个 div 之间保持 100% 的宽度
- android - Appcenter 找不到 APK 文件
- react-native - axios cancel 在 react native redux 中不起作用
- promise - 为什么我不允许违反 Promise?