如何将列转换为行?

时间:2018-06-02 18:13:49

标签: python csv transpose

我将数据存储在文件中:

样品:

stderr

我想将列转换为行:

City Very poor Poor Fair Good Excellent 
Mumbai 0 4 30 58 8 
Delhi 5 7 18 39 31

python中有没有可以执行此操作的功能?我在使用xml路径的sql中完成了它,但我不知道在python中做的最佳方法。

1 个答案:

答案 0 :(得分:1)

以下是仅使用标准库中的csv模块的解决方案。

为方便起见,我们使用csv.DictReader来读取并通过返回的OrderedDict对象使用标题。

from io import StringIO
import csv

mystr = StringIO("""City VeryPoor Poor Fair Good Excellent
Mumbai 0 4 30 58 8
Delhi 5 7 18 39 31""")

# replace mystr with open('file.csv', 'r')
with mystr as fin:
    reader = csv.DictReader(fin, delimiter=' ')
    for line in reader:
        city = line.popitem(last=False)[1]
        for cat, rating in line.items():
            print(city, rating, cat)

Mumbai 0 VeryPoor
Mumbai 4 Poor
Mumbai 30 Fair
Mumbai 58 Good
Mumbai 8 Excellent
Delhi 5 VeryPoor
Delhi 7 Poor
Delhi 18 Fair
Delhi 39 Good
Delhi 31 Excellent

注意我已经稍微更改了您的数据:VeryPoor是类别而不是Very Poor - 您可能需要为标题中的非标准空格指定特定处理方式。