Разделение столбца при определенной строке
Не понимаю как сделать разделение столбца при определенной строке. Есть набор данных в виде:
|**Stage 1**| |
|-----------|-----|
|50.0 |4.67 |
|100.0 |4.80 |
|**Stage 2**| |
|50.0 |-4.67|
|100.0 |-4.80|
|**Stage 3**| |
|50.0 |4.67 |
|100.0 |4.80 |
Нужно чтобы стало:
|Stage 1| |Stage 2| |Stage 3| |
|-------|-------|-------|-------|-------|-----|
|50.0 |4.67 |50.0 |-4.67 |50.0 |4.67 |
|100.0 |4.80 |100.0 |-4.80 |100.0 |4.80 |
Количество Stage`й может быть > 100. Как можно автоматизировать данный процесс на python, может быть использовать pandas?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Ну как-то так вот линейно "в лоб" можно решить:
from collections import defaultdict
text = '''
|**Stage 1**| |
|-----------|-----|
|50.0 |4.67 |
|100.0 |4.80 |
|**Stage 2**| |
|50.0 |-4.67|
|100.0 |-4.80|
|**Stage 3**| |
|50.0 |4.67 |
|100.0 |4.80 |
'''.split('\n')
d = defaultdict(str)
i = 0
savediv = ""
for line in text:
line = line.strip()
if line:
if '**' in line:
i = 0
else:
i += 1
if i == 1:
if '--' in line:
savediv = line[1:]
else:
d[i] += savediv
i += 1
if d[i]:
line = line[1:]
d[i] += line
for line in d.values():
print(line)
Вывод:
|**Stage 1**| |**Stage 2**| |**Stage 3**| |
|-----------|-----|-----------|-----|-----------|-----|
|50.0 |4.67 |50.0 |-4.67|50.0 |4.67 |
|100.0 |4.80 |100.0 |-4.80|100.0 |4.80 |