簡體   English   中英

在熊貓中按兩列分組

[英]groupby two columns in pandas

我有一個這樣的數據框:

df = pd.DataFrame({'sym': list('aabaabab'), 'dir':[0,0,0,1,0,1,1,1], 'price': [100, 101, 102, 110, 120, 125, 200, 250]})

   dir  price sym
0    0    100   a
1    0    101   a
2    0    102   b
3    1    110   a
4    0    120   a
5    1    125   b
6    1    200   a
7    1    250   b

我想對sym和一組0和1進行分組(不知道這是否是正確的說法!)。 我期望的結果如下所示:

   dir  price sym
0    0    100   a
1    0    101   a
3    1    110   a
   dir  price sym
4    0    120   a
6    1    200   a
   dir  price sym
2    0    102   b
5    1    125   b
7    1    250   b

在每個sym dir每次變為0時,我想要一個新的組,其后的0等於1

使用cumsum創建另一個幫助鍵,然后groupby

df['helpkey']=df.groupby('sym').apply(lambda x : ((x['dir']==1)&(x['dir'].shift(-1)==0)).shift().fillna(0).cumsum()).reset_index(level=0,drop=True)
d={x: y for x , y in df.groupby(['helpkey','sym'])}

for x , y in df.groupby(['helpkey','sym']):
 print(y)

  sym  dir  price helpkey
0   a    0    100       0
1   a    0    101       0
3   a    1    110       0
  sym  dir  price helpkey
2   b    0    102       0
5   b    1    125       0
7   b    1    250       0
  sym  dir  price helpkey
4   a    0    120       1
6   a    1    200       1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM