首页 > 解决方案 > 在 Python 中使用 Excel 文件作为 pandas 数据框的映射

问题描述

我正在尝试使用错误代码的excel“主列表”以及它们所属的较大组,它们属于熊猫数据框中较大组的组错误。我不确定如何做到这一点。我之前尝试将错误代码添加到字典中,并使用组名作为键并按此分组,但它不会正确地对代码进行分组。我将在下面添加我的主列表和数据框的示例。

主列表:

代码 类型 1 类型 2 类型 3 类型4
代码 A X
代码 B X
代码 C X
代码 D X
代码 E X

依此类推 10 列和 57 行

数据框:

代码 分子 分母 错误率
代码 B 6 10 0.6
代码 A 4 10 0.4
代码 C 9 10 0.9
代码 D 0 10 0

对于出现的任何错误代码,依此类推

我希望输出为:

代码 分子 分母 错误率
类型 1 15 10 1.5
类型 2 4 10 0.4
类型 4 0 10 0

等等以进行适当的分组。

我该怎么做呢?

我使用过字典,并且使用isin()过类型列表无济于事。

这是我的示例文件的简化版本:

代码 电源周期 恐慌 温度 应用重启
恐慌 X
电源复位-Power_Reset-硬电源 X
Power Reset-Hard_Power-硬电源 X
硬应用程序重启 X
代码原因温度 X

依此类推 10 列和 57 行

代码 分子 分母 错误率
电源复位-Power_Reset-硬电源 6 10 0.6
恐慌 4 10 0.4
Power Reset-Hard_Power-硬电源 9 10 0.9
硬应用程序重启 0 10 0

依此类推,无论出现哪个错误代码,行数一样多

期望的输出:|代码|分子|分母|错误率| |----|---------|------------|----------| |电源循环| 15 | 10 | 1.5 | |恐慌| 4 | 10 | 0.4 | |应用重启 | 0 | 10 | 0 |

标签: pythonpandasdataframemapping

解决方案


说第一个数据帧 df1 第二个 df2

#convert Code to CODE in first dataframe with str.upper for standardization
df1.CODE = df1.CODE.str.upper()

#replace X with column names and remove nan values
df1["new"] = df1.filter(like="T").replace("X", pd.Series(df1.columns, df1.columns)).stack().to_numpy()

#replace CODE A,B,C,D,E with Type 1,2,3,4
df2["CODE"] = df2[["CODE"]].replace(df1[["CODE","new"]].set_index("CODE").to_dict()["new"],regex=True)

df2

    CODE    Numerator   Denominator Error Rate
0   Type 1      6          10         0.6
1   Type 2      4          10         0.4
2   Type 1      9          10         0.9
3   Type 4      0          10         0.0

推荐阅读