为了账号安全,请及时绑定邮箱和手机立即绑定

重新排列数据 - 行成多列

重新排列数据 - 行成多列

缥缈止盈 2021-12-17 10:41:38
所以我有超过 100 万条记录的 csv 文件:(https://i.imgur.com/rhIhy5u.png)我需要以不同的方式排列数据,使重复的“参数”成为列/行本身,例如 category1、category2、category3 (有20多个类别,没有重复)但所有数据都保持它们的关系。我尝试在 python 中使用“pandas”和“csv”,但我对它完全陌生,我从来没有与这样的数据有任何关系。import csvwith open('./data.csv', 'r') as _filehandler:    csv_file_reader = csv.reader(_filehandler)    param = [];    csv_file_reader = csv.DictReader(_filehandler)    for row in csv_file_reader:        if not row['Param'] in param:            param.append(row['Param']);    col = "";    for p in param:        col += str(p) + '; ';    print(col);    import numpy as np    np.savetxt('./SortedWexdord.csv', (parameters), delimiter=';', fmt='%s')我想过,但数据不是我的强项,有什么想法吗?
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

这是应该起作用的东西。如果您需要像这样标准化的每行多个值,您可以编辑第 9 行(开始category)以获取值列表,而不仅仅是row[1].


import csv


data = {}


with open('data.csv', 'r') as file:

    reader = csv.reader(file)

    next(reader) # Skip header row

    for row in reader:

        category, value = row[0], row[1] # Assumes category is in column 0 and target value is in column 1

        if category in data:

            data[category].append(value)

        else:

            data[category] = [value] # New entry only for each unique category


with open('output.csv', 'wb') as file: # wb is write and binary, avoids double newlines on windows

    writer = csv.writer(file)

    writer.writerow(['Category', 'Value'])

    for category in data:

        print([category] + data[category])

        writer.writerow([category] + data[category]) # Make a list starting with category and then listing each value



查看完整回答
反对 回复 2021-12-17
  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信