pandas - 枢轴 ||创建比率/百分比的自定义列

2024-05-21

import numpy as np
import pandas as pd

data = {'experiment_name': ['exp1', 'exp1', 'exp1', 'exp1', 'exp1', 'exp1'], 
'variant': ['A', 'B', 'A','B','A','B'],'sessions_with_orders':[1,2,6,0,23,12],
'total_sessions':[10,23,56,22,89,12]}  
  
# Create DataFrame  
df = pd.DataFrame(data)    
df.pivot_table(index='variant',columns='experiment_name',values=['total_sessions','sessions_with_orders'],aggfunc=np.sum)

我有一些数据框,我使用聚合函数对其进行旋转。

我得到的输出是期望的。但是,我想创建比率sessions_with_orders/total_sessions。我该怎么做呢?这在 Excel 上是可行的,但我无法考虑 pandas-data 框架。

我不明白 lambda、cross_tab 或如何实现它们。
我在蟒蛇3.9.8。 np 版本1.22.3和 pd 版本1.3.4


IIUC,你可以使用assign:

(df
.pivot_table(index='variant',columns='experiment_name',values=['total_sessions','sessions_with_orders'],aggfunc=np.sum)
.assign(ratio=lambda d: d['sessions_with_orders']/d['total_sessions'])
)

output:

                sessions_with_orders total_sessions     ratio
experiment_name                 exp1           exp1          
variant                                                      
A                30                   155            0.193548
B                14                   57             0.245614

但是,如果您有多个实验,最好使用join(我在这里将演示的最后一个实验更改为“exp2”):

df2 = df.pivot_table(index='variant',columns='experiment_name',
                     values=['total_sessions','sessions_with_orders'],
                     aggfunc=np.sum)

df2.join(pd.concat({'ratio': df2['sessions_with_orders'].div(df2['total_sessions'])},
          axis=1))

output:

                sessions_with_orders       total_sessions           ratio     
experiment_name                 exp1  exp2           exp1  exp2      exp1 exp2
variant                                                                       
A                               30.0   NaN          155.0   NaN  0.193548  NaN
B                                2.0  12.0           45.0  12.0  0.044444  1.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pandas - 枢轴 ||创建比率/百分比的自定义列 的相关文章

  • Pandas groupby 汇总

    如果我有一个这样的数据框 import pandas as pd df pd DataFrame A 1 1 2 B a b c metric 4 5 2 df df groupby A B sum 得到的 df 为 metric A B
  • Numpy 附加到一个空数组

    第一种情况 gt gt gt import numpy as np gt gt gt x np array 0 gt gt gt x np append x 1 gt gt gt x array 0 1 x包含 2 个元素 这是为什么 第二
  • 在 R 中创建缓冲区和计数点

    I asked 这个问题 https stackoverflow com questions 42498344 create buffer around spatial point data in r and count how many
  • python中使用argsort进行排序

    我尝试对数组进行排序 import numpy as np arr 5 3 7 2 6 34 46 344 545 32 5 22 print unsorted print arr np argsort arr print sorted p
  • 使用 numpy 数组计算累积最小值

    我想计算 累积最小值 数组 基本上 数组到每个索引的最小值 例如 import numpy as np nums np array 5 3 4 2 1 1 2 0 cumulative min np zeros nums size dtyp
  • 删除 numpy 中的循环以进行简单的矩阵分配

    如何删除这个简单矩阵分配中的循环以提高性能 nk ncol nrow index shape for kk in range 0 nk for ii in range 0 nrow for jj in range 0 ncol idx in
  • 将 pandas DataFrame 中的数字转换为特定字符串格式

    我需要运行一个可以通过循环完成的任务 但我想有一种更有效 更漂亮的方法来做到这一点 我有一个DataFrame它有一个整数列 我想将其转换为 4 位字符串表示形式 也就是说 3 应转换为 0003 234 应转换为 0234 我正在寻找一种
  • 使用自定义颜色渐变填充两条线之间的区域

    我正在做一项几乎已经完成的作业 但我想对其添加一些小改动 尝试使用基于温度的颜色图而不是简单的颜色来填充两条线之间的区域 绘制线条的方式本质上使它们成为独立的实体 所以我知道我可能需要两个彼此相遇或重叠的颜色图来完成此任务 但我不太确定如何
  • 使用 python 中的硬件 rng

    是否有任何现成的库 以便 numpy 程序可以使用 intel 硬件 prng rdrand 来填充随机数缓冲区 如果做不到这一点 有人可以为我指明一些我可以改编或使用的 C 代码的正确方向 我将 CPython 和 Cython 与 nu
  • 将 numpy 数组传递给 C++

    我有一些用 Python 编写的代码 其输出是 numpy 数组 现在我想将该输出发送到C 代码 其中将执行大部分计算 我尝试过使用 cython 的public cdef 但我正在处理一些问题 我将感谢您的帮助 这是我的代码 pymodu
  • 如何抑制spark输出控制台中的“Stage 2===>”?

    我有数据帧并试图获取不同的计数并且能够成功获取不同的计数 但是每当 scala 程序执行时我都会收到此消息 Stage 2 gt 1 1 2 我如何在控制台中抑制特定的此消息 val countID dataDF select substr
  • 闪亮错误:参数暗示行数不同

    我正在尝试开发一个简单的应用程序 从 Kijiji 网站获取本地分类广告 我用几乎相同的脚本制作了一个类似的应用程序 但我没有收到下面描述的错误 所以我不知道这个脚本出了什么问题 我尝试了我能想到的一切 但无法让它发挥作用 的结构df数据框
  • python中稀疏矩阵的相关系数?

    有谁知道如何从Python中的一个非常大的稀疏矩阵计算相关矩阵 基本上 我正在寻找类似的东西numpy corrcoef这将适用于 scipy 稀疏矩阵 您可以从协方差矩阵相当直接地计算相关系数 如下所示 import numpy as n
  • 如何使用 pandas 使用 if 语句添加新列?

    请您帮我在 python pandas 中编写以下概念 我有以下数据类型 id Train A Train A Train A Train B Train B Train B start A B C D E F end G H I J K
  • 如果满足 NaN 阈值,Python 将删除 DF 中的所有特征实例

    Using df dropna thresh x inplace True 我可以成功删除至少缺少的行x非纳米值 但因为我的 df 看起来像 2001 2002 2003 2004 bob A 123 31 4 12 bob B 41 1
  • 在numpy中用另一个数组索引一个数组

    假设我有一个矩阵A具有一些任意值 array 2 4 5 3 1 6 8 9 8 7 0 2 和一个矩阵B其中包含 A 中元素的索引 array 0 0 1 2 0 3 2 1 3 2 1 0 如何从中选择值A被指出B i e A B 2
  • 计算矩阵乘法的子集

    当我有两个非稀疏矩阵时A and B 有没有一种方法可以有效地计算C A T dot B 当我只想要元素的子集时C 我有所需的指数C以指定的CSC格式存储here http docs scipy org doc scipy referenc
  • pandas.DF() 中的列是否单调递增?

    我可以使用 is monotonic 方法检查 pandas DataFrame 的索引是否单调递增 但是 我想检查其中一列值的值 浮点 整数 是否严格增加 In 13 my df pd DataFrame 1 2 3 5 7 6 9 In
  • 当时间为 00:00 时,Pandas 读取 excel 返回类型对象

    在更新版本的 Pandas 中 我使用的是 1 2 3 当从 Excel 文件读取时间时 时间为 00 00 00 时会出现问题 下面的脚本 其中 filepath 是我的 Excel 文件的路径 其中包含一个标题名为 Time 的列 im
  • Pandas、大数据、HDF 表以及调用函数时的内存使用情况

    简短的问题 当 Pandas 在 HDFStore 上工作时 例如 mean 或 apply 它是否将内存中的完整数据作为 DataFrame 加载 还是将逐条记录作为 Serie 进行处理 详细描述 我必须处理大型数据文件 并且我可以指定

随机推荐