2017-10-30 14 views
1

私は位置と時間のデータを含む143999行のデータフレームを持っています。 私は既に行間の時間差を較正する列 "dt"を作成しました。 dt値にグループ番号を与える新しい列を作成します。 だから、それはグループ= 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 

答えて

0

あなたはTrueは1と評価されたという事実を利用して​​を使用することができます。

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の最初の値が

densdata['group'] = (densdata.dt.replace(densdata.dt[0],np.nan) >= 60).cumsum() 
を使用し、その後、 dtの最初の値が> = 60の場合でも、0であることを保証したい場合
関連する問題