我在有时有一行的数据帧上运行Apply函数,并且有两个数据帧源。一种是.loc的结果,另一种是使用to_frame()系列转换为数据帧。
两者的数据相同。它在递归函数中,以f1作为初始输入,然后在函数内部查询df2并再次调用函数。
df1 = row.to_frame()
df2 = df3.loc[df3.loc['colname']== value]
然后,它们经历与以下相同的套用功能:
another_df = df1_or_df2.apply (lambda row:function (row))
上面的在df1上可以正常工作,但对于df2则对df2 keyerror: ('id', 'occurred at index id')
抛出错误。如果我添加axis=1
,则可以。
我做了try, except
使其工作,因为这是一次性的事情,但是现在需要提高速度。
您能告诉我为什么df的两种格式不同吗?或者我如何能更有效地做到这一点?
答案 0 :(得分:0)
我认为to_frame()
可以根据需要将系列转换为一行,但是我认为每列都会产生一行。所以我做了df1 = row.to_frame().transpose()
。现在,这两个都可以使用。
为了提高效率,我在原始数据帧中有一个属性,可将数据划分为子集。因此,现在整个功能花费的时间更少。
谢谢。