Я работаю с фреймом данных, содержащим 582 260 строк и 24 столбца.Каждая строка соответствует 24-часовому временному ряду длины вектора, а 20 строк (дней) соответствуют id_1, 20 - id_2 ... и т. Д. До id_N.Я хотел бы объединить в одну строку все 20 строк id_1, чтобы мой объединенный временной ряд стал иметь длину вектора 480 (20 дней * 24 часа / сутки), и повторить эту операцию с id_1 до id_N.
Показана очень уменьшенная и воспроизводимая версия моего фрейма данных (столбец ID должен быть индексом, но для целей итерации я его переустановил):
df = pd.DataFrame([['id1', 1, 1, 3, 4, 1], ['id1', 0, 1, 5, 2, 1], ['id1', 3, 4, 5, 0, 0],
['id2', 1, 1, 8, 0, 6], ['id2', 5, 3, 1, 1, 2], ['id2', 5, 4, 5, 2, 7]],
columns = ['ID', 'h0', 'h1', 'h2', 'h3', 'h4'] )
Я пытался использовать следующую функцию для итерации построк во фрейме данных, но он не дает ожидаемого результата.
def concatenation(df):
for i, row in df.iterrows():
if df.ix[i]['ID'] == df.ix[i+1]['ID']:
pd.concat([df], axis = 1)
return(df)
concatenation(df)
Ожидаемый результат должен выглядеть следующим образом:
df = pd.DataFrame([['id1', 1, 1, 3, 4, 1, 0, 1, 5, 2, 1, 3, 4, 5, 0, 0],
['id2', 1, 1, 8, 0, 6, 5, 3, 1, 1, 2, 5, 4, 5, 2, 7]],
columns = ['ID', 'h0', 'h1', 'h2', 'h3', 'h4',
'h0', 'h1', 'h2', 'h3', 'h4',
'h0', 'h1', 'h2', 'h3', 'h4'])
Существует ли компактный и элегантный способпрограммирование этой задачи с помощью инструментов pandas?
Заранее благодарим за помощь.