【发布时间】:2020-10-07 19:39:04
【问题描述】:
我有一个包含数千列的 Pandas 数据框。 Pandas Dataframe 的 sn-p 通过以下方式表示:
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)
我试图简明扼要地确定“SearchValue”是否在“Check1”、“Check2”以及通过“Check 60000”之前的所有其他列中,如果确实存在,则在新的“FinalResult”中返回“SearchValue” ' 列,当 false 时默认为 'XX'。
我知道我可以使用类似下面的代码来完成这项任务,但我需要编写代码 60,000 次才能覆盖所有列。考虑到实际 DataFrame 中存在的其他“SearchValue”列的数量,这可能会非常迅速地将程序推入数百万行代码,这简直是不可接受的。有没有更好的方法来做到这一点?
Condition=[
DataFrame1['SearchValue'] .eq (DataFrame1 [ 'Check 1' ])
| DataFrame1['SearchValue'] .eq (DataFrame1 [ 'Check 2' ])
| DataFrame1['SearchValue'] .eq (DataFrame1 [ 'Check 60000' ])
]
Choice=[
DataFrame1['SearchValue']
]
DataFrame1['FinalResult']=numpy.select(Condition,Choice,default='XX')
DataFrame1.head(4)
提前致谢!
【问题讨论】: