pandas 在python中计算每个子类别的解决率

bbmckpt7  于 2023-01-01  发布在  Python
关注(0)|答案(1)|浏览(132)

我有一个如下的数据框。我把数据框做得更短了,以便更容易地表达我的想法
| 类别|问题|第1周|第2周|
| - ------| - ------| - ------| - ------|
| 待定B| C级|1个|第二章|
| 待定B| E级|三个|四个|
| 待定B|右|四个|五个|
| 待定C| C级|1个|第二章|
| 待定C| E级|三个|四个|
| 待定C|右|四个|五个|
| 已解决|C级|1个|第二章|
| 已解决|E级|三个|四个|
| 已解决|右|四个|五个|
| - --------:|-—————————————:|- ---:|:---:|
| 共计||二十四|三十三|
'使用以下公式:

formular for WK 1 column

C-WK 1/(Total WK 1 - (sum of pending C WK 1))
E-WK 1/(Total WK 1 - (sum of pending C WK 1))
R-WK 1/(Total WK 1 - (sum of pending C WK 1))

formular for WK 2 column

C-WK 2/(Total WK 2 - (sum of pending C WK 2))
E-WK 2/(Total WK 2 - (sum of pending C WK 2))
R-WK 2/(Total WK 2 - (sum of pending C WK 2))`

最后我想有一个 Dataframe 像下面。
| 类别|问题|第1周|第2周|第1周(右侧)|第2周(右侧)|
| - ------| - ------| - ------| - ------| - ------| - ------|
| 已解决|C级|1个|第二章|零点零六二五|0.090909美元|
| 已解决|E级|三个|四个|0.1875| 0.181818|
| 已解决|右|四个|五个|0.25| 0.227273|
| - --------:|-—————————————:|- ---:|:---:|- ------:|:------:|

c9qzyr3d

c9qzyr3d1#

您可以构造一个函数来计算WK 1(R)WK 2(R)的列,然后使用.loc选择"Category"等于"Resolved"的行。

def calculate_wk_resolution(df):
    # Calculate WK 1(R) and WK 2(R)
    df["WK 1(R)"] = df["WK 1"] / (df["WK 1"].sum() - df[df["Category"] == "Pending C"]["WK 1"].sum())
    df["WK 2(R)"] = df["WK 2"] / (df["WK 2"].sum() - df[df["Category"] == "Pending C"]["WK 2"].sum())
    
calculate_wk_resolution(df)

out = df.loc[df["Category"] == "Resolved", ["Category", "Issue", "WK 1", "WK 2", "WK 1(R)", "WK 2(R)"]]
print(out)

输出:

Category  Issue  WK 1  WK 2  WK 1(R)  WK 2(R)
6  Resolved     C     1     2   0.0625  0.090909
7  Resolved     E     3     4   0.1875  0.181818
8  Resolved     R     4     5   0.2500  0.227273

相关问题