亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas 將列值與同一數據幀中的多個列相匹配

Pandas 將列值與同一數據幀中的多個列相匹配

POPMUISE 2023-10-18 16:19:53
我有一個包含數千列的 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)我有一個包含數千列的 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)
查看完整描述

3 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

# create a mask using isin and any

mask = DataFrame1[DataFrame1.columns[2:]].isin(DataFrame1['SearchValue']).any(1)

# use numpy.where to assign values

DataFrame1['FinalResult'] = np.where(mask, DataFrame1['SearchValue'], 'XX')


     ID SearchValue Check 1 Check 2 Check 60000 FinalResult

0  A1X1          J1      Q4      ND          J1          J1

1  A1X2          X1      01      Q2          JK          XX

2  A1X3          R6      R6      01          A5          R6

3  A1X4          J1      R6      A5          B6          XX


查看完整回答
反對 回復 2023-10-18
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

您想要搜索每行中的值:


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 FinalResult

0  A1X1          J1      Q4      ND          J1          J1

1  A1X2          X1      01      Q2          JK          XX

2  A1X3          R6      R6      01          A5          R6

3  A1X4          J1      R6      A5          B6          XX


查看完整回答
反對 回復 2023-10-18
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

我會進入 numpy 世界并進行比較:


box = df.to_numpy()


box



array([['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 where


df['Final Result'] = np.where(np.sum(compare, axis=1), box[:, 1], "XX")



? ? ID? SearchValue Check 1 Check 2 Check 60000 Final Result

0? ?A1X1? ? J1? ? ? ? Q4? ? ? ND? ? ? J1? ? ? ? ? ?J1

1? ?A1X2? ? X1? ? ? ? 01? ? ? Q2? ? ? JK? ? ? ? ? ?XX

2? ?A1X3? ? R6? ? ? ? R6? ? ? 01? ? ? A5? ? ? ? ? ?R6

3? ?A1X4? ? J1? ? ? ? R6? ? ? A5? ? ? B6? ? ? ? ? ?XX



查看完整回答
反對 回復 2023-10-18
  • 3 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號