簡體   English   中英

在相等的列值上切片熊貓數據框

[英]Slicing pandas dataframe on equal column values

我有一個看起來像這樣的熊貓 df:

import pandas as pd

df = pd.DataFrame({0:[1],5:[1],10:[1],15:[1],20:[0],25:[0],
                   30:[1],35:[1],40:[0],45:[0],50:[0]})
df

在此處輸入圖片說明

列名反映坐標。 我想檢索具有連續相等數字的列的開始和結束坐標。

輸出應該是這樣的:

# start,end
0,15 
20,25
30,35
40,50

IIUCusing groupbydiffcumsum分裂組

s=df.T.reset_index()
s=s.groupby(s[0].diff().ne(0).cumsum())['index'].agg(['first','last'])
Out[241]: 
   first  last
0             
1      0    15
2     20    25
3     30    35
4     40    50

cumsum來識別 group 和groupby

s = df.iloc[0].diff().ne(0).cumsum()
(df.columns.to_series()
 .groupby(s).agg(['min','max'])
)

輸出:

   min  max
0          
1    0   15
2   20   25
3   30   35
4   40   50

暫無
暫無

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

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