开发者社区> 问答> 正文

Python:如何传递下一行DataFrame.apply()方法?

我有成千上万行的DataFrame。其结构如下

 A    B    C     D

0 q 20 'f' 1 q 14 'd' 2 o 20 'a'

我想比较当前行和下一行的A列。如果这些值相等,我想将具有较低值的B列的值添加到具有较大值的比较行的D列中。然后,我要删除列B的移动列值。这就像一个交换过程。

A    B    C     D

0 q 20 'f' 14 1 o 20 'a'

我有数千行,而iloc,loc在方法上运行缓慢。至少我想使用DataFrame apply方法。我尝试了一些代码示例,但是它们没有用。

我想做如下事情:DataFrame.apply(lambda row:self.compare(row,next(row)),axis = 1))

我有一个compare方法,但无法将下一行传递给compare方法。如何将其传递给方法?我也乐于听到更快的熊猫解决方案。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 09:29:22 745 0
1 条回答
写回答
取消 提交回答
  • 最好不要用apply来做,因为那样会很慢。你可以看看使用shift,例如

    df['A_shift'] = df['A'].shift(1)
    df['Is_Same'] = 0
    df.loc[df.A_shift == df.A, 'Is_Same'] = 1
    

    如果要在组内进行转换,会变得有些复杂,但仍然可以实现。

    回答来源:stackoverflow

    2020-03-24 09:29:29
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载