У меня есть большой CSV-файл, который я хочу сгруппировать в строки. Это примерно миллион строк, каждая из которых будет сгруппирована в 10000 строк.
Каждая строка файла является либо комментарием, либо начинается с числа, за которым следует двоеточие, за которым следует значение, которое может содержать больше двоеточий.
Каждая строка, начинающаяся с 0:
, указывает начало новой группы, в качестве последней строки также указывается 0:
Пример:
# comment line
# comment line
0:
1:HELLO
2:WORLD
3:1.0
4:5.0
5:TRUE
0:
2:HEY
6:1
7:12
# COMMENT LINE
0:
1: FILE
3: 2.0
10: http://www.google.com
0:
Я читаю файл в DataFrame, как это. (Разделитель не идеален, но работает с данными, которые у меня есть)
df = pd.read_csv(FILENAME,
sep='(?<=\d):',
comment='#',
names=['col', 'val'],
engine='python')
В результате
col val
0 0
1 1 HELLO
2 2 WORLD
3 3 1.0
4 4 5.0
5 5 TRUE
6 0
7 2 HEY
8 6 1
9 7 12
10 0
11 1 FILE
12 3 2.0
13 10 http://www.google.com
14 0
Это должно быть преобразовано в
pd.DataFrame([
{1: "HELLO", 2: "WORLD", 3: 1.0, 4: 5.0, 5: "TRUE"},
{2: "HEY", 6: 1, 7: 12},
{1: "FILE", 3: 2.0, 10: "http://www.google.com"}
])
который выглядит так
1 2 3 4 5 6 7 10
0 HELLO WORLD 1.0 5.0 TRUE
1 HEY 1.0 12.0
2 FILE 2.0 http://www.google.com
Любые советы о том, как сделать эту группировку?
Могу ли я использовать c-engine read_csv, чтобы разделить строки по первому двоеточию, чтобы ускорить процесс?