将不同的csv行写入保留相同标题的列中? -Python

时间:2018-09-10 13:03:00

标签: python csv dictionary dynamic zip

带有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 :(得分:1)

如果数据量不大,则简单易懂的脚本。

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被' '分隔)。

答案 1 :(得分:0)

您可以使用熊猫:

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