【问题标题】:Convert dataframe to 5*5 grid of choice将数据框转换为选择的 5*5 网格
【发布时间】:2022-12-12 14:16:53
【问题描述】:

以下是分数和等级的标准值。 分数列包含指定范围内的数字。 |得分 |一年级 |二级 |三年级 | Grade4| | ------ | ------ | ------ |--------|--------| | <260 | A1 | IA1 | D1 |ID1 | | 260-275 | A2 |IA2 | D2 |ID2 | | 275-280 | A3 |IA3 |D3 |ID3 | | 280-285| A4 |IA4 |D4 |ID4 | | >=285 | A5 |IA5 |D5 |ID5 |

输入 :-

Score Grade1 Grade2 Grade3 Grade4
290 A1 IA4 D3 ID2

输出:-

Tiers Grade Grade1 Grade2 Grade3 Grade4
1 A1
2 ID2
3 D3
4 IA4
5 290

【问题讨论】:

    标签: python pandas dataframe multiple-columns


    【解决方案1】:

    例子

    data1 = {'Grade': {0: 'B1', 1: 'B2', 2: 'B3', 3: 'B4', 4: 'B5'},
             'Grade1': {0: 'A1', 1: 'A2', 2: 'A3', 3: 'A4', 4: 'A5'},
             'Grade2': {0: 'IA1', 1: 'IA2', 2: 'IA3', 3: 'IA4', 4: 'IA5'},
             'Grade3': {0: 'D1', 1: 'D2', 2: 'D3', 3: 'D4', 4: 'D5'},
             'Grade4': {0: 'ID1', 1: 'ID2', 2: 'ID3', 3: 'ID4', 4: 'ID5'}}
    data2 = {'Grade': {0: 'B5'}, 'Grade1': {0: 'A1'}, 'Grade2': {0: 'IA4'},
             'Grade3': {0: 'D3'}, 'Grade4': {0: 'ID2'}}
    df1 = pd.DataFrame(data1)
    df2 = pd.DataFrame(data2)
    

    代码

    使用broadcasting 设置条件

    df1[df1.eq(df2.iloc[0])]
    

    结果:

        Grade   Grade1  Grade2  Grade3  Grade4
    0   NaN     A1      NaN     NaN     NaN
    1   NaN     NaN     NaN     NaN     ID2
    2   NaN     NaN     NaN     D3      NaN
    3   NaN     NaN     IA4     NaN     NaN
    4   B5      NaN     NaN     NaN     NaN
    

    【讨论】:

    • 非常整洁干净的方法。为此+1。
    猜你喜欢
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2015-08-10
    相关资源
    最近更新 更多