Pandas 将列值与同一数据帧中的多个列相匹配

我有一个包含数千列的 Pandas Dataframe。Pandas Dataframe 的片段通过以下方式表示:


    import numpy as np

    import pandas as pd

    DataFrame1=pd.DataFrame([ ['A1X1' , 'J1', 'Q4', 'ND', 'J1'],

                              ['A1X2' , 'X1', '01', 'Q2', 'JK'],

                              ['A1X3' , 'R6', 'R6', '01', 'A5'],

                              ['A1X4' , 'J1', 'R6', 'A5', 'B6']],

                            columns=['ID', 'SearchValue', 'Check 1', 'Check 2', 'Check 60000'])

    DataFrame1.head(4)

https://img1.sycdn.imooc.com/652f955e0001365a03560125.jpg

我有一个包含数千列的 Pandas Dataframe。Pandas Dataframe 的片段通过以下方式表示:


    import numpy as np

    import pandas as pd

    DataFrame1=pd.DataFrame([ ['A1X1' , 'J1', 'Q4', 'ND', 'J1'],

                              ['A1X2' , 'X1', '01', 'Q2', 'JK'],

                              ['A1X3' , 'R6', 'R6', '01', 'A5'],

                              ['A1X4' , 'J1', 'R6', 'A5', 'B6']],

                            columns=['ID', 'SearchValue', 'Check 1', 'Check 2', 'Check 60000'])

    DataFrame1.head(4)

https://img1.sycdn.imooc.com/652f956a0001e81104320130.jpg

POPMUISE
浏览 83回答 3
3回答

鸿蒙传说

# create a mask using isin and anymask = DataFrame1[DataFrame1.columns[2:]].isin(DataFrame1['SearchValue']).any(1)# use numpy.where to assign valuesDataFrame1['FinalResult'] = np.where(mask, DataFrame1['SearchValue'], 'XX')     ID SearchValue Check 1 Check 2 Check 60000 FinalResult0  A1X1          J1      Q4      ND          J1          J11  A1X2          X1      01      Q2          JK          XX2  A1X3          R6      R6      01          A5          R63  A1X4          J1      R6      A5          B6          XX

青春有我

您想要搜索每行中的值:mask = DataFrame1.filter(like='Check').eq(DataFrame1['SearchValue'], axis=0).any(1)DataFrame1['FinalResult'] = DataFrame1['SerchValue'].where(mask, 'XX')输出:     ID SearchValue Check 1 Check 2 Check 60000 FinalResult0  A1X1          J1      Q4      ND          J1          J11  A1X2          X1      01      Q2          JK          XX2  A1X3          R6      R6      01          A5          R63  A1X4          J1      R6      A5          B6          XX

蝴蝶不菲

我会进入 numpy 世界并进行比较:box = df.to_numpy()boxarray([['A1X1', 'J1', 'Q4', 'ND', 'J1'],       ['A1X2', 'X1', '01', 'Q2', 'JK'],       ['A1X3', 'R6', 'R6', '01', 'A5'],       ['A1X4', 'J1', 'R6', 'A5', 'B6']], dtype=object)compare = box[:, 1, np.newaxis] == box[:, 2:]现在分配numpy wheredf['Final Result'] = np.where(np.sum(compare, axis=1), box[:, 1], "XX")    ID  SearchValue Check 1 Check 2 Check 60000 Final Result0   A1X1    J1        Q4      ND      J1           J11   A1X2    X1        01      Q2      JK           XX2   A1X3    R6        R6      01      A5           R63   A1X4    J1        R6      A5      B6           XX
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python