Guest User

Untitled

a guest
Oct 17th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. import pandas as pd
  2.  
  3. d = ({
  4. 'ST_A' : [0,0,0,0,0,1,1,1,1],
  5. 'PG_A' : [0,0,0,1,1,1,2,2,2],
  6. 'ST_B' : [0,1,1,1,1,1,1,1,1],
  7. 'PG_B' : [0,0,0,0,0,0,0,1,1],
  8. 'Area' : ['','','X','','X','','','','X'],
  9. })
  10.  
  11. df = pd.DataFrame(data = d)
  12.  
  13. ST_A PG_A ST_B PG_B Area
  14. 0 0 0 0 0
  15. 1 0 0 1 0
  16. 2 0 0 1 0 X
  17. 3 0 1 1 0
  18. 4 0 1 1 0 X
  19. 5 1 1 1 0
  20. 6 1 2 1 0
  21. 7 1 2 1 1
  22. 8 1 2 1 1 X
  23.  
  24. cols = ['ST_A','PG_A','ST_B','PG_B']
  25. df[cols] = df[cols].diff()
  26. df = df.fillna(0.)
  27. df = df.loc[(df[cols] == 1).any(axis=1)]
  28.  
  29. ST_A PG_A ST_B PG_B Area
  30. 1 0 0 1 0
  31. 3 0 1 1 0
  32. 7 1 2 1 1
  33.  
  34. indexes=np.where(df['Area']=='X')[0].tolist()
  35. 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()))
  36. l=[]
  37. for i in indexes:
  38. if min(indexes2,key=lambda x: abs(x-i)) in l:
  39. l.append(min(indexes2,key=lambda x: abs(x-i))-2)
  40. else:
  41. l.append(min(indexes2,key=lambda x: abs(x-i)))
  42. print(df.iloc[l].sort_index())
  43.  
  44. Area PG_A PG_B ST_A ST_B
  45. 1 0 0 0 1
  46. 3 1 0 0 1
  47. 7 2 1 1 1
Add Comment
Please, Sign In to add comment