[英]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.