Объект DataFrame
в библиотеке pandas делает это довольно простым.
import csv
from collections import defaultdict
from pandas import DataFrame
rdr = csv.reader(open('mat.txt'), delimiter=' ', skipinitialspace=True)
datacols = defaultdict(list)
# skip header
rdr.next()
for spec, dat, num in rdr:
datacols['species'].append(int(spec))
datacols['dates'].append(dat)
datacols['data'].append(int(num))
df = DataFrame(datacols)
df2 = df.pivot(index='dates', columns='species', values='data')
Сначала мы читаем данные из файла в указанном вами формате. Затем создайте словарь столбцов (datacol
), так как это то, чего хочет панда DataFrame
. После того, как DataFrame
создан (df
), затем вызовите его метод сводки, чтобы получить его в нужном формате. Вот как df
и df2
выглядят в консоли:
In [205]: df
Out[205]:
data dates species
0 3 Dec 1
1 4 Jan 2
2 6 Dec 2
3 3 Dec 2
In [206]: df2
Out[206]:
1 2
Dec 3 3
Jan NaN 4
Затем вы можете использовать метод toCSV
, чтобы сохранить его в файл (см. Ранее ссылки на документы DataFrame).