Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pandas as pd
- d = ({
- 'ST_A' : [0,0,0,0,0,1,1,1,1],
- 'PG_A' : [0,0,0,1,1,1,2,2,2],
- 'ST_B' : [0,1,1,1,1,1,1,1,1],
- 'PG_B' : [0,0,0,0,0,0,0,1,1],
- 'Area' : ['','','X','','X','','','','X'],
- })
- df = pd.DataFrame(data = d)
- ST_A PG_A ST_B PG_B Area
- 0 0 0 0 0
- 1 0 0 1 0
- 2 0 0 1 0 X
- 3 0 1 1 0
- 4 0 1 1 0 X
- 5 1 1 1 0
- 6 1 2 1 0
- 7 1 2 1 1
- 8 1 2 1 1 X
- cols = ['ST_A','PG_A','ST_B','PG_B']
- df[cols] = df[cols].diff()
- df = df.fillna(0.)
- df = df.loc[(df[cols] == 1).any(axis=1)]
- ST_A PG_A ST_B PG_B Area
- 1 0 0 1 0
- 3 0 1 1 0
- 7 1 2 1 1
- indexes=np.where(df['Area']=='X')[0].tolist()
- indexes2=list(map((1).__add__,np.where(df[df.columns[:-1]].sum(axis=1) < df[df.columns[:-1]].shift(-1).sum(axis=1).sort_index())[0].tolist()))
- l=[]
- for i in indexes:
- if min(indexes2,key=lambda x: abs(x-i)) in l:
- l.append(min(indexes2,key=lambda x: abs(x-i))-2)
- else:
- l.append(min(indexes2,key=lambda x: abs(x-i)))
- print(df.iloc[l].sort_index())
- Area PG_A PG_B ST_A ST_B
- 1 0 0 0 1
- 3 1 0 0 1
- 7 2 1 1 1
Add Comment
Please, Sign In to add comment