python - pandas- 为列中每个唯一字符串/组的新计算行
问题描述
我有一个df
像这样的数据框:
GROUP TYPE COUNT
A 1 5
A 2 10
B 1 3
B 2 9
C 1 20
C 2 100
我想为每个组添加一行,以便新行计算每个ala的COUNT
whereTYPE
等于 2 和COUNT
where等于 1 的商:TYPE
GROUP
GROUP TYPE COUNT
A 1 5
A 2 10
A .5
B 1 3
B 2 9
B .33
C 1 20
C 2 100
C .2
提前致谢。
解决方案
df2 = df.pivot(index='GROUP', columns='TYPE', values='COUNT')
df2['div'] = df2[1]/df2[2]
df2.reset_index().melt('GROUP').sort_values('GROUP')
输出:
GROUP TYPE value
0 A 1 5.000000
3 A 2 10.000000
6 A div 0.500000
1 B 1 3.000000
4 B 2 9.000000
7 B div 0.333333
2 C 1 20.000000
5 C 2 100.000000
8 C div 0.200000
我的方法是通过旋转来重塑数据框,因此每种类型都有自己的列。然后分割很容易,然后通过熔化将其重塑回原始形状。在我看来,这也是一个非常易读的解决方案。
当然,如果你更喜欢np.nan
作为div
一种类型,你可以很容易地替换它,但我不确定这是否是你想要的。
推荐阅读
- javascript - TypeScript + React.Lazy
- lxc - lxc-start:没有指定容器配置
- botframework - 将 QnAMAker 与 Azure Bot 框架集成时出错
- django - 如何正确验证 Django 表单中的日期字段?
- node.js - Redis XADD 可以订阅多少个流?
- python - Pyspark 使用 Window 函数和我自己的函数
- laravel - 如何在 Laravel 中通过 GuzzleHttpClient 向页面发送参数
- hash - HMAC openssl 的奇怪行为
- python - Pandas / matplotlib中的堆叠交错水平条形图
- react-native - 超过最大更新深度 - 将动画组件包装在模态中?