I have a table pandas DF which looks like
| Slave | start_addr0 | end_addr0 | start_addr1 | end_addr1 | start_addr2 | end_addr2 | |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 10000000 | 1FFFFFFF | NaN | NaN | NaN | NaN |
| 1 | 1 | 20000000 | 2007FFFF | 40000000 | 40005FFF | NaN | NaN |
| 2 | 1 | 20000000 | 2007FFFF | 20100000 | 201FFFFF | NaN | NaN |
| 3 | 2 | 20200000 | 202FFFFF | 20080000 | 20085FFF | 40006000 | 400FFFFF |
| 4 | 3 | 0 | 0FFFFFFF | NaN | NaN | NaN | NaN |
| 5 | 4 | 20300000 | 203FFFFF | NaN | NaN | NaN | NaN |
| 6 | 5 | 20400000 | 204FFFFF | NaN | NaN | NaN | NaN |
For each slave number I need to convert it to a list of ranges (tuples). For example,
Slave1_list = ( (20000000, 2007FFFF), (40000000, 40005FFF), (20100000, 201FFFFF))
The number of slaves (rows) and address-pairs (columns) can vary.
Thanks
EDIT:
Run the following code to load sample data into dataframe:
import pandas as pd
import io
f = io.StringIO('''Slave|start_addr0|end_addr0|start_addr1|end_addr1|start_addr2|end_addr2
0|10000000|1FFFFFFF|NaN|NaN|NaN|NaN
1|20000000|2007FFFF|40000000|40005FFF|NaN|NaN
1|20000000|2007FFFF|20100000|201FFFFF|NaN|NaN
2|20200000|202FFFFF|20080000|20085FFF|40006000|400FFFFF
3|0|0FFFFFFF|NaN|NaN|NaN|NaN
4|20300000|203FFFFF|NaN|NaN|NaN|NaN
5|20400000|204FFFFF|NaN|NaN|NaN|NaN
''')
df = pd.read_csv(f, sep='|', engine='python', index_col=None)