我一直试图弄清楚如何为定义的函数循环多个输入 对于我的输入:
#These lists will always be same size
Par= ('cat','dog','pig','mouse')
Var = ('john','mike','stan','steve')
然后我定义了一个函数:
def analysis(par,var):
if data[par+'_cost'].dtype is np.dtype('O'):
data[par+'_cost']=data[par+'_cost'].str.replace(',','').astype('float32')
if data[var+'_payment'].dtype is np.dtype('O'):
data[var+'_payment']=data[var+'_payment'].str.replace(',','').astype('float32')
exception = data[(data[par+'_cost']==0) & (data[var+'_payment'] >0)]
data_new=data[-data['index'].isin(exception['index'])]
我测试了这个小示例函数的部分和前两个if语句的工作,但生成新数据帧的最后两行并没有实际返回数据帧。最后,我希望data_new考虑Par和Var中的每个列标题。
尝试了多个循环:
for par in Par:
for var in Var:
analysis(par,var)
使用zip功能(我第一次)失败
for par,var in zip(Par,Var):
analysis(par,var)
当我试图检查函数是否产生数据帧时,data_new,我想继续得到它实际上并没有创建数据帧的错误。
exception.describe()
NameError: name 'exception' is not defined
我还是Python新手,大多使用PANDAS,所以我不确定其他功能。以下问题让我知道该怎么做,但并没有解决我的问题:
迭代两个列表:How can I iterate through two lists in parallel?
多处理:Python multiprocessing a function with several inputs
转换几个输入的列表:Pythonic way of converting a list to inputs of a function of several variables
如果我的函数没有被正确定义,任何想法,因为我没有看到输出结果的data_new是因为我写了什么,或者代码是不是通过每个一对值并将函数应用于它。
任何见解一如既往地非常感谢!