在行rem之后重新排列csv中的数据

2024-09-30 05:25:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些csv数据和一段代码,可以自动删除csv中的行。我需要的是一个代码,可以重新排序栏10中的csv图片,栏10原来是排名栏11,但这是在excel中实现的。请注意,数据中的数据总是按从最低到最高的顺序排列,请注意,定义csv中每个数据集的唯一数据在第3列中。我需要的是一些代码,在删除一些行之后,根据定义每个数据集的第3列对第10列重新排序。你知道吗

1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,1,141.88,data data data
1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,2,141.85,data data data
1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,3,140.81,data data data
1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,4,131.86,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,1,163.85,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,2,163.24,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,3,162.93,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,4,161.23,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,5,159.83,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,6,156.71,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,7,155.49,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,8,154.96,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,9,147.96,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,10,142.34,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,11,140.09,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,12,129.7,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,1,169.5,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,2,165.2,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,3,165.1,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,4,160.45,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,5,159.8,data data data

在运行一段代码时,我从csv中删除了特定的行,例如,它现在可以如下所示:

1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,2,141.85,data data data
1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,3,140.81,data data data
1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,4,131.86,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,1,163.85,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,3,162.93,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,4,161.23,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,5,159.83,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,6,156.71,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,8,154.96,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,9,147.96,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,11,140.09,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,1,169.5,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,2,165.2,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,3,165.1,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,5,159.8,data data data

我们现在可以看到,作为删除这些行的结果,列10中的列for unique datat1读取2,3,4,这需要调整到1,2,3,类似地,列10读取1,2,3,5,这需要调整到1,2,3,4,因此调整后的csv将读取:

1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,1,141.85,data data data
1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,2,140.81,data data data
1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,3,131.86,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,1,163.85,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,2,162.93,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,3,161.23,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,4,159.83,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,5,156.71,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,6,154.96,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,7,147.96,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,8,140.09,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,1,169.5,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,2,165.2,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,3,165.1,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,4,159.8,data data data

亲切的问候


Tags: csv数据代码fordata定义排序图片
2条回答

所以,你想把你的行按第三,然后按第十个元素排列,对吗?你知道吗

读取文件

ext = "C:\Users\Me\Desktop\\test.txt"
readL = []

f = open(ext)

for line in f:

    readL += [line.strip().split(',')]   

f.close()

按元素3然后10对行列表排序:

from operator import itemgetter
print sorted(readL, key=itemgetter(3,10))

在字典中存储一组^{} iterables,以便为每个唯一的列值保留一个计数器。如果使用^{},则每当遇到新的唯一值时,可以自动将计数从1开始。你知道吗

您的数据已排序,因此只需替换第10列:

import csv
from itertools import count
from collections import defaultdict
from functools import partial

counts = defaultdict(partial(count, 1))  # create a new count starting at 1

with open(output_csv_filename, 'wb') as outfile:
    writer = csv.writer(outfile)
    for row in your_list_of_rows:
        row[9] = next(counts[row[2]])  # get the next count value
        writer.writerow(row)

就这样。row[9]是第10列;对于在row[2](第3列)中找到的每个唯一值,它将由从1开始的数字填充。你知道吗

计数器字典的快速演示:

>>> from itertools import count
>>> from collections import defaultdict
>>> from functools import partial
>>> counts = defaultdict(partial(count, 1))
>>> next(counts['foo'])
1
>>> next(counts['foo'])
2
>>> next(counts['bar'])
1
>>> next(counts['foo'])
3

在示例数据集上运行上述代码将导致:

1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,1,141.85,data data data
1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,2,140.81,data data data
1-20,data1,Unique data1,4,data2,14,data3.65,data4,data5,3,131.86,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,1,163.85,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,2,162.93,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,3,161.23,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,4,159.83,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,5,156.71,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,6,154.96,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,7,147.96,data data data
1-30,data1,Unique data2,4,data2,12,data3.30,data4,data5,8,140.09,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,1,169.5,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,2,165.2,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,3,165.1,data data data
1-50,data1,Unique data3,2,data2,16,data3.00,data4,data5,4,159.8,data data data

相关问题 更多 >

    热门问题