2017-04-06 123 views
0

我想创建一个使用数据框的列作为输入的函数。这部分输入将是一系列的。熊猫将函数应用于数据框中的数据框索引系列

因此,这将功能类似下面

def myFunc(input1, input2, s_input): 
    for s in s_input['c':'d'].index: 
     print s + str(s_input[s]) +str(input1) 
    for s in s_input['e':].index: 
     print s + str(s_input[s]) +str(input2) 

s = pd.Series({'a':1,'b':4,'c':7,'d':11,'e':15,'f':22}) 

input1=' input1' 
input2 =' input2' 

myFunc(input1,input2,s) 

c7 input1 
d11 input1 
e15 input2 
f22 input2 

我想如果你想申请的功能,逐行这里,在使用axis = 1将其应用到数据帧像

df = pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9],'d':[11,12,13], 'e':[11,23,33], 'f':[75,44,55]})  

df.apply(lambda x: myFunc(df.a,df.b, df.loc[x.index,'c':])) 
+3

这里的问题究竟是什么? – Vaishali

回答

1

apply

df.apply(lambda x: myFunc(x.a, x.b, x.loc['c':]), axis=1) 

# gets printed... 
c71 
d111 
e114 
f754 
c82 
d122 
e235 
f445 
c93 
d133 
e336 
f556 

但是,您通常会雇用apply返回值。目前,您的功能不会返回任何内容。

+0

我知道我很亲密。现在我想我明白拉姆达,不知道为什么我以前没有。 –