我正在为Pandas DataFrame
using创建新列np.select(condition, choices)
。我想将我的代码模块化为一个函数,这样做的麻烦方式如下:
def selection(
df: pd.DataFrame,
conditions: Optional[List] = None,
choices: Optional[List] = None,
column_names: Optional[List] = None,
):
if conditions is not None: # if its none, then don't run this, implies choices and column names are none too
for condition, choice, col_name in zip(conditions, choices, column_names):
df[col_name] = np.select(condition, choice, default=" ")
return df
要运行此功能,我只需要这样做:
conditions = [...]
choices = [...]
column_names = [...]
my_tuple = (conditions, choices, column_names)
df = selection(df, *my_tuple)
我想提高自己的编码技能,并且我觉得这种方式不是最优的,特别是,我觉得涉及到的论点conditions, choices, column_names
可以是要作为论点传递的元组。我欢迎任何有关改进此代码的建议。
如果您真的想将它们作为元组传递,可以,您可以:
def selection(
df: pd.DataFrame,
cond_choice_col: Optional[Tuple] = None
):
if cond_choice_col is not None: # if its none, then don't run this, implies choices and column names are none too
# unpack the tuple here
for condition, choice, col_name in zip(*cond_choice_col):
df[col_name] = np.select(condition, choice, default=" ")
return df
conditions = [...]
choices = [...]
column_names = [...]
my_tuple = (conditions, choices, column_names)
df = selection(df, cond_choice_col=my_tuple)
但老实说,我确实认为您的功能比上述功能更加用户友好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句