Python:根据值和条件向交叉表添加列

2024-04-27 04:08:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个由零和一组成的NumPy数组创建的Pandas交叉表。创建交叉表后:ct = pd.crosstab(index=np.array(labels), columns=np.array(cols)我有一个交叉表,它看起来像:

col_0     0     1 
row_0
---------------------
0        618    53   
1        53     79

我想在这里添加一个列来显示误报和漏报的错误百分比。我使用ct[2] = ct.apply(lambda row: row[0] + row[1], axis = 1)向交叉表添加了一个新列,它添加了前两列之和的列。我想添加第四列,计算第一行的ct[0][0]除以总和,第二行计算ct[1][1]除以总和,并将该列添加到ct[3]。我试过了:

^{pr2}$

但是由于它执行了两次,它将用第二个结果覆盖列。我尝试使用ct[3][i]但没有成功。使用lambda y: y[1] if y==0 else y[0]不起作用。使用基于现有值的基于条件的计算,向dataframe/crosstab添加新列的方法是什么?在


Tags: columnslambdanumpypandasindexlabelsnp数组
1条回答
网友
1楼 · 发布于 2024-04-27 04:08:54

用纽比和熊猫试试这个:

ct[3] = (ct * np.eye(2)).sum() / ct.sum(1)

或者

^{pr2}$

输出:

col_0    0   1         3
row_0                   
0      618  53  0.921013
1       53  79  0.598485

相关问题 更多 >