【问题标题】:Python - increment function from a dataframePython - 来自数据帧的增量函数
【发布时间】:2016-05-25 22:53:16
【问题描述】:

我想从数据框创建一个增量函数。 我的数据框看起来像这样:

 ___________ ___________
| Action_ID | Unique_ID |
|     4     |           |
|     3     |           |
|     2     |           |
|     1     |           |
|     4     |           |
 ___________ ___________

想要在 Action_ID 等于 4 时设置 Unique_ID 等于 i+1。所以:

 ___________ ___________
| Action_Id | Unique_Id |
|     4     |     1     |
|     3     |           |
|     2     |           |
|     1     |           |
|     4     |     2     |
 ___________ ___________

我试过这段代码:

def order_code(grp):
    i=0
    if(grp.loc[grp.first_valid_index(),'Action_Id']==4):
    i = i+1
    grp['Unique_Id']=i
return(grp)

c=(c.groupby('Action_Id')).apply(order_code)

但它显示我:

 ___________ ___________
| Action_Id | Unique_Id |
|     4     |     1     |
|     3     |           |
|     2     |           |
|     1     |           |
|     4     |     1     |
 ___________ ___________

有人可以帮帮我吗?

【问题讨论】:

    标签: python-2.7 increment


    【解决方案1】:

    您的问题是 i 在您正在使用的函数的范围内。例如,如果您要这样做:

    inc = 0
    def order_code(grp):
      global inc
      if(grp.loc[grp.first_valid_index(),'Action_Id']==4):
        inc += 1
        grp['Unique_Id']=inc
      return(grp)
    c=(c.groupby('Action_Id')).apply(order_code)
    

    它会起作用的。

    【讨论】:

    • 感谢 Eli 的快速回答。但是我已经尝试过您的代码,它显示的功能与我的函数相同(1 而不是增量)。
    猜你喜欢
    • 2018-02-20
    • 2021-03-19
    • 1970-01-01
    • 2021-12-21
    • 2022-07-06
    • 1970-01-01
    • 2021-12-06
    • 2020-09-20
    • 2020-10-12
    相关资源
    最近更新 更多