gpt4 book ai didi

python - 根据列表中的顺序替换列中的值

转载 作者:行者123 更新时间:2023-12-04 08:15:38 24 4
gpt4 key购买 nike

现在我有一个数据框。我想替换列 C 中的值,当列AB两者都找到匹配项。替换规则由列表中字符串的顺序决定 L = ['x','y','z'].

  • 对于第 0 行和第 1 行,列 AB匹配,然后列 Cxy . x来之前 y根据名单L .然后y替换为 x .
  • 对于第 2 行,列 AB未找到匹配项,请离开列 C沿
  • 对于第 3 行和第 4 行,列 AB匹配,然后列 Cyz . y来之前 z根据名单L .然后z替换为 y .

  • import pandas as pd
    import numpy as np
    L = ['x','y','z']

    s1 = pd.Series(['a', 'c', 'x'])
    s2 = pd.Series(['a', 'c', 'y'])
    s3 = pd.Series(['a', 'd', 'z'])
    s4 = pd.Series(['b', 'd', 'y'])
    s5 = pd.Series(['b', 'd', 'z'])

    df = pd.DataFrame([list(s1), list(s2), list(s3), list(s4), list(s5)], columns = ['A', 'B', 'C'])
    df


    A B C
    0 a c x
    1 a c y
    2 a d z
    3 b d y
    4 b d z
    期望的结果:
        A   B   C
    0 a c x
    1 a c x
    2 a d z
    3 b d y
    4 b d y

    最佳答案

    您可以 sort C 列的值基于列表中的排序 L ,然后 group列上的数据框 A, Btransform栏目 C使用 first :

    # create mapping dict
    # in order to impose ordering
    d = {v: i for i, v in enumerate(L)}

    # map and sort the values
    s = df.assign(k=df['C'].map(d)).sort_values('k')

    # group and transform
    df['C'] = s.groupby(['A', 'B'])['C'].transform('first')
       A  B  C
    0 a c x
    1 a c x
    2 a d z
    3 b d y
    4 b d y

    关于python - 根据列表中的顺序替换列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65720851/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com