首页 > 解决方案 > 具有“loc”和“to_frame”的不同格式的数据帧

问题描述

我在有时有一行的数据帧上运行应用函数,并且有两个数据帧源。一个是 .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,但会为 df2keyerror: ('id', 'occurred at index id')的 df2 引发错误。如果我添加axis=1,那么它的工作原理。

我确实try, except让它工作,因为它是一次性的,但现在需要提高速度。

你能说出为什么 df 的两种格式不同,或者我怎样才能更有效地做到这一点吗?

标签: pythonpandasdataframeapply

解决方案


我想to_frame()按照我的意愿将系列转换为一行,但我认为它是为每一列制作一行。所以我做到了df1 = row.to_frame().transpose()。现在它适用于他们两个。

为了提高效率,我在原始数据框中有一个属性来将数据划分为子集。所以,现在整个功能需要更少的时间。

谢谢你。


推荐阅读