Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- d=[['7500', '3.2900', '0', 'apple'],['7500', '-0.3500', '1', 'orange'],['7500', '-4.1400', '2', 'orange'],['7501', '3.4625', '0', 'apple'],['7501', '-0.2275', '1', 'apple'],['7501', '-4.1175', '2', 'orange'],['7502', '3.2087', '0', 'orange'],['7502', '-0.7313', '1', 'apple'],['7502', '-4.7513', '2', 'apple']]
- df=pd.DataFrame(d, columns=["Frame","Z","Order","Name"])
- >>> df
- Frame Z Order Name
- 0 7500 3.2900 0 apple
- 1 7500 -0.3500 1 orange
- 2 7500 -4.1400 2 orange
- 3 7501 3.4625 0 apple
- 4 7501 -0.2275 1 apple
- 5 7501 -4.1175 2 orange
- 6 7502 3.2087 0 orange
- 7 7502 -0.7313 1 apple
- 8 7502 -4.7513 2 apple
- (0,1)
- (0,2)
- (1,2)
- (apple, orange)
- (apple, orange)
- (orange, orange)
- ( 3.2900, -0.3500)
- ( 3.2900, -4.1400)
- (-0.3500, -4.1400)
- (apple, orange)
- first_vals = [3.2900, 3.2900, ...]
- second_vals = [-0.3500, -4.1400, ...]
- (orange, orange)
- first_vals = [-0.3500, ...]
- second_vals = [-4.140, ...]
- from itertools import combinations
- from collections import defaultdict
- zpairs = defaultdict(list)
- for name, group in df.groupby(["Frame"]):
- order_pairs = combinations(range(len(group)), 2)
- zvals = group["Z"].values
- rowids = group["Name"].values
- for pair in order_pairs:
- pair_str = str(rowids[pair[0]])+"-"+str(rowids[pair[1]])
- zpairs[pair_str+"-first"].append(zvals[pair[0]])
- zpairs[pair_str+"-second"].append(zvals[pair[1]])
- >>> dict(zpairs)
- {'apple-apple-first': ['3.4625', '-0.7313'],
- 'apple-apple-second': ['-0.2275', '-4.7513'],
- 'apple-orange-first': ['3.2900', '3.2900', '3.4625', '-0.2275'],
- 'apple-orange-second': ['-0.3500', '-4.1400', '-4.1175', '-4.1175'],
- 'orange-apple-first': ['3.2087', '3.2087'],
- 'orange-apple-second': ['-0.7313', '-4.7513'],
- 'orange-orange-first': ['-0.3500'],
- 'orange-orange-second': ['-4.1400']}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement