Python函数如何为单个变量传入多个值?列删除函数参数改造咨询
解决DataFrame批量删除指定后缀列的问题
首先明确你之前用'DATE' or 'STATE'无效的原因:在Python里,or是逻辑运算符,'DATE' or 'STATE'会直接返回第一个非空字符串'DATE',相当于你只给函数传了一个后缀,自然删不掉以STATE结尾的列。
要实现删除多后缀列的需求,必须修改函数,不过改动很小——因为pandas的str.endswith方法本身就支持传入字符串的可迭代对象(比如列表、元组),直接调整函数参数的处理逻辑即可:
方案1:直接支持多值传入
修改后的函数:
def function_drop_columns(x, y): return x.loc[:, ~x.columns.str.endswith(y)]
调用时直接传列表或元组:
df1 = function_drop_columns(df, ['DATE', 'STATE'])
方案2:兼容单值和多值输入
如果想保留原函数对单个字符串的支持(比如之前写的function_drop_columns(df, 'DATE')还能正常用),可以加个简单的类型判断:
def function_drop_columns(x, y): # 若传入的是单个字符串,转成元组(str.endswith支持元组) if isinstance(y, str): y = (y,) return x.loc[:, ~x.columns.str.endswith(y)]
这样不管是传单个后缀还是多个后缀的列表,函数都能正确处理。
内容的提问来源于stack exchange,提问作者CodingNewbie
相关产品推荐
相关产品推荐

