我有一些数据集,我需要能够uniquenameclass
为每个日期分组。在下面的示例数据中,我使用UniqueNameClass1
了UniqueNameClass3
等,但实际上它们只是文本字符串。所以我需要做的是在 csv 中循环选择一个日期相同的组,然后在这个日期组中按UniqueNameClass
. 如果这很难理解,希望这个例子能阐明我遇到的问题:
原始数据
text,text,text,11/03/12,text,text,text,UniqueNameClass1,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass2,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass4,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass3,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass1,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass2,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass5,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass1,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass1,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass5,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass3,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass4,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass5,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass5,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass3,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass5,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass4,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass4,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass5,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass4,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass2,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass1,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass3,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass2,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass2,text,text
数据按日期排序,然后按 UniqueNameClass 分组
text,text,text,11/03/12,text,text,text,UniqueNameClass1,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass1,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass1,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass1,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass2,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass2,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass4,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass3,text,text
text,text,text,11/03/12,text,text,text,UniqueNameClass5,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass3,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass3,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass4,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass4,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass4,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass5,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass5,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass5,text,text
text,text,text,12/03/12,text,text,text,UniqueNameClass5,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass1,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass2,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass2,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass2,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass3,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass4,text,text
text,text,text,13/03/12,text,text,text,UniqueNameClass5,text,text
所以只有同一日期的数据才能被分组在一起UniqueNameClass
。我知道在这个例子中我已经按时间顺序放置了组,实际上组的顺序并不重要,只是在给定日期每个组中的每一行都彼此相邻。
编辑
我试图运行 phihag 提供的代码,有很多不同的方式,但是我尝试过的一切都产生了回溯:
File "C:\RawDataeDataTest.py", line 6, in <module>
data = list(csv.reader(io.StringIO('RawDataeDataTest.csv')))
TypeError: initial_value must be unicode or None, not str
我认为可以根据提供的代码和提供的注释工作的代码是:
import csv
import io
data = list(csv.reader(io.StringIO('RawDataeDataTest.csv')))
data.sort(key=lambda row: (row[3], row[7]))
print(u'\n'.join(u','.join(row) for row in data))
和
import csv
import io
data = list(csv.reader('RawDataeDataTest.csv'))
data.sort(key=lambda row: (row[3], row[7]))
print(u'\n'.join(u','.join(row) for row in data))
对于后者,我实际上得到了不同的回溯:
Traceback (most recent call last):
File "C:\RawDataeDataTest.py", line 7, in <module>
data.sort(key=lambda row: (row[3], row[7]))
File "C:\RawDataeDataTest.py", line 7, in <lambda>
data.sort(key=lambda row: (row[3], row[7]))
IndexError: list index out of range