我有一个熊猫数据帧,它显示为:
df1['A'].ix[1:3] Sims Grade SleepNumber
2017-01-01 02:00:00 [33, 34, 39] 5 6
2017-01-01 03:00:00 [3, 43, 9] 1 12
我有一个函数定义为:
def Fn(S, G, SL):
#some complicated operation but for example it returns only product
return S*G*SL
我想对df1的每一行执行以下操作,以获得如下数据帧:
df1['A'].ix[1:3] FnResult
2017-01-01 02:00:00 [Fn(33, 5, 6), Fn(34, 5, 6), Fn(39, 5, 6)]
2017-01-01 03:00:00 [Fn(3, 1, 12), Fn(43, 1, 12), Fn(9, 1, 12)]
我尝试了以下方法:
z1 = df1.apply(map(lambda x:Fn([x, x.Grade, x.SleepNumber]), x.Sims))
但我没有正确设置它,所以它出错了。你知道吗
您可以将Fn重写为,因为S是一列列表:
或者在不修改Fn的情况下,修改
apply
方法中的map
函数;回想一下map
本身是不可调用的,您需要将它包装在另一个lambda中:相关问题 更多 >
编程相关推荐