gpt4 book ai didi

python - 在 python/pandas 中为重复的 np.where 语句创建一个动态函数

转载 作者:行者123 更新时间:2023-11-28 18:14:38 25 4
gpt4 key购买 nike

我正在创建代码,其中有很多函数 np.where 的重复。大约有 200 个字段,每个字段都需要使用 np.where 进行某种转换(本质上是 case when/if then 语句)。

我希望通过编写函数而不是为每个字段重复语句来清理代码。问题是有些字段只需要一个基本的 np.where 语句,而其他字段有嵌套的 np.where 语句(最多 10 个),鉴于此我不确定如何使函数足够动态以处理它,或者是否值得尝试这样做。

示例

Case 1-  Simple np.where
TABLE[‘A’]=np.where(TABLE.FIELD1=='N',TABLE.FIELD2,TABLE.FIELD3)


Case 2- Nested np.where
TABLE[‘B’]= np.where(TABLE.FIELD1=='N','ADBE',
np.where(TABLE.FIELD1=='A','ADB ',
np.where(TABLE.FIELD1=='D','CDB ',
np.where(TABLE.FIELD1=='W','ODB ',
np.where(TABLE.FIELD1=='T','TDB ',
np.where(TABLE.FIELD1=='I','ODI ',
np.where(TABLE.FIELD1=='S','GDB ',
np.where(TABLE.FIELD1=='B','BVP ',
np.where(((TABLE.FIELD1=='G')&(TABLE.FIELD2[0:4]=='UXXX')),'EGIB',
np.where(TABLE.FIELD1=='G','GIB ', 'null'))))))))))

最佳答案

下面的方法行不通吗?它甚至可能更高效,因为需要计算和应用的 bool 数组更少。

d = {'N': 'ADBE', 'A': 'ADB', 'D': 'CDB', 'W': 'ODB',
'T': 'TDB', 'I': 'ODI', 'S': 'GDB', 'B': 'BVP'}

TABLE['B'] = 'null'
TABLE.loc[(TABLE.FIELD1=='G') & (TABLE.FIELD2[0:4]=='UXXX'), 'B'] = 'EGIB'
TABLE.loc[TABLE.FIELD1.isin(d), 'B'] = TABLE.loc[TABLE.FIELD1.isin(d), 'B'].map(d)

关于python - 在 python/pandas 中为重复的 np.where 语句创建一个动态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49162118/

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