2017-07-29 12 views
0

における負の値のシーケンスを数える:パンダは、私は正または負とすることができるパンダDATAFRAMEコラム「B」の値を持つ列

data=[[5889.25, 738.0], 
[5896.5, 49.0], 
[5897.5, 130.0], 
[5899.5, -266.0], 
[5903.75, -126.0], 
[5903.75, -512.0], 
[5898.75, -141.0], 
[5897.5, -303.0], 
[5895.0, -107.0], 
[5893.25, 27.0]] 

pd.DataFrame(data,columns=['A','B']) 

    A B 
0 5889.25 738.0 
1 5896.50 49.0 
2 5897.50 130.0 
3 5899.50 -266.0 
4 5903.75 -126.0 
5 5903.75 -512.0 
6 5898.75 -141.0 
7 5897.50 -303.0 
8 5895.00 -107.0 
9 5893.25 27.0 

どのように多くのカウント列「C」を作るための高速神託の方法は何ですか行数は "B"で負数ですか?だから、データフレームは、次のようになります。

A B C 
0 5889.25 738.0 0 
1 5896.50 49.0 0 
2 5897.50 130.0 0 
3 5899.50 -266.0 1 
4 5903.75 -126.0 2 
5 5903.75 -512.0 3 
6 5898.75 -141.0 4 
7 5897.50 -303.0 5 
8 5895.00 -107.0 6 
9 5893.25 27.0 0 

答えて

4

あなたがgroupbycumcount()+1

data=[[5889.25, 738.0], 
[5896.5, 49.0], 
[5897.5, 130.0], 
[5899.5, -266.0], 
[5903.75, -126.0], 
[5903.75, -512.0], 
[5898.75, -141.0], 
[5897.5, -303.0], 
[5895.0, -107.0], 
[5893.25, 27.0]] 

df = pd.DataFrame(data,columns=['A','B']) 
df['C'] = np.where(df['B']>0,0,df.groupby(np.where(df['B']<0,0,df['B'])).cumcount()+1) 

出力使用し、その後、負の値を見つけるためにnp.whereを使用することができます:あなたが作成したい場合は

 
     A  B C 
0 5889.25 738.0 0 
1 5896.50 49.0 0 
2 5897.50 130.0 0 
3 5899.50 -266.0 1 
4 5903.75 -126.0 2 
5 5903.75 -512.0 3 
6 5898.75 -141.0 4 
7 5897.50 -303.0 5 
8 5895.00 -107.0 6 
9 5893.25 27.0 0 

をすべての正の数のシーケンスは、関数を書くことができます

count = 0 
def count_neg(x): 
    global count 
    if x < 0: 
     count+=1 
    else : 
     count = 0 
    return count 
df['C'] = df['B'].apply(count_neg) 

出力:

 
     A  B C 
0 5889.25 -738.0 1 
1 5896.50 -49.0 2 
2 5897.50 130.0 0 
3 5899.50 -266.0 1 
4 5903.75 -126.0 2 
5 5903.75 -512.0 3 
6 5898.75 -141.0 4 
7 5897.50 -303.0 5 
8 5895.00 -107.0 6 
9 5893.25 27.0 0 
+0

あなたの解決策は、(ので、次の順序で負の数が7などで始まる)カウントに1つのシーケンス内のすべての負の数を続けます。各正数の後にカウンタをリセットする方法は? – PeterL

+0

@PeterL正の値ごとにカウンタをリセットするソリューションを見つけましたか? – cJc

+0

@cJc私はカウンターをリセットするためのソリューションを入れました。これは手動で定義された関数の助けを借りて行われます。あなたがそれを行うための機能を組み込んでいるなら、それは素晴らしいでしょう – Dark

関連する問題