增加列值pandas

时间:2017-10-30 13:23:21

标签: python pandas

我的数据帧为143999行,包含位置和时间数据。 我已经创建了一个列“dt”来计算行之间的时差。 现在我想创建一个新列,它给dt值一个组号。 所以它从group = 0开始,当dt> 60组号应增加1。 我尝试了以下方法:

def group(x):
    c = 0 #

    if densdata["dt"] < 60:
        densdata["group"] = c

    elif densdata["dt"] >= 60:
        c += 1
        densdata["group"] = c

densdata["group"] = densdata.apply(group, axis=1)'

我得到的错误是:The truth value of a Series is ambiguous

任何想法如何解决这个问题?

这就是我想要的:

   dt       group
   0.01       0
   2          0
   0.05       0    
   300        1
   2          1
   60         2

1 个答案:

答案 0 :(得分:0)

您可以利用True评估为1并使用.cumsum()的事实。

densdata = pd.DataFrame({'dt': np.random.randint(low=50,high=70,size=20),
                         'group' : np.zeros(20, dtype=np.int32)})

print(densdata.head())
   dt  group
0  52      0
1  59      0
2  69      0
3  55      0
4  63      0

densdata['group'] = (densdata.dt >= 60).cumsum()

print(densdata.head())
   dt  group
0  52      0
1  59      0
2  69      1
3  55      1
4  63      2

如果您想保证group的第一个值为0,即使dt的第一个值为&gt; = 60,也请使用

densdata['group'] = (densdata.dt.replace(densdata.dt[0],np.nan) >= 60).cumsum()