Запись различных строк CSV в столбцы с одинаковым заголовком? - питон - PullRequest
0 голосов
/ 10 сентября 2018

с файлом CSV формата

   Name  X    Y    L   W 
   alpha 100  200  50  20
   beta  200  250  30  40
   ...

Как мы можем конвертировать CSV в формат

  Name  X     Y   L   W   Name  X    Y    L   W  
  alpha 100  200  50  20  beta  200  250  30  40

Максимальное количество строк (исключая заголовок) равно 4. Кто-нибудь может подсказать, как построить динамический словарь для такого сценария и выполнить zip для получения результата в формате, описанном выше с использованием python?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

простой простой скрипт, если данные не велики.

import csv
rd = csv.reader(open("input.csv"), delimiter=' ', quoting=csv.QUOTE_MINIMAL, skipinitialspace=True)
header = rd.next()
wr = csv.writer(open("output.csv", "w"), delimiter=' ')
data_lines = 0 
data = []
for line in rd:
    data += line
    data_lines += 1
wr.writerow(header*data_lines)
wr.writerow(data)

skipinitialspace=True - удалить лишний пробел в разделителе (учитывая, что входные данные csv разделены ' ').

0 голосов
/ 10 сентября 2018

Вы можете использовать Панд:

import pandas as pd

# read file
df = pd.read_csv('file.csv')

# split by row and concatenate along columns
res = pd.concat([df.iloc[[i]].reset_index(drop=True) \
                 for i in range(len(df.index))], axis=1)

# export to csv
res.to_csv('out.csv', index=False)

Результат для 2 строк:

    Name    X    Y   L   W  Name    X    Y   L   W
0  alpha  100  200  50  20  beta  200  250  30  40
...