Pandas将函数应用于数据框内的数据框索引系列

时间:2017-04-06 17:38:31

标签: python pandas apply

我想创建一个使用数据帧列作为输入的函数。此输入的一部分将是一系列。

所以它的功能如下

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

我想将其应用于像

这样的数据框
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':]))

1 个答案:

答案 0 :(得分:1)

如果您想在此处逐行应用您的功能,请使用db.collection.update({_id: '...'}, {$push:{'letters':'x'}}); db.collection.update({_id: '...'}, {$addToSet:{'letters':'x'}}); 上的axis = 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 来返回值。目前,您的功能不会返回任何内容。