Я ищу эффективный способ преобразовать данные из «широкой» структуры в фрейм данных.
Данные: у нас разные наблюдения, и каждое наблюдение имеет данные по характеристикам за разные дни. Идеальный фрейм данных будет иметь следующие столбцы: Наблюдение_ид, день, характеристика_1, характеристика_2, ....
Текущая структура данных: список словарей. Каждый словарь представляет собой наблюдение. В каждом словаре у нас есть ключ «monitoring_id» и вставлены ключи для дня + feature_id для всех дней и всех функций.
Например:
# Input:
x = [{'observation_id': '1', '0.feature_1': 2, '0.feature_2': 2, '1.feature_1': 3, '1.feature_2': 1},
{'observation_id': '2', '0.feature_1': 7, '0.feature_2': 3, '1.feature_1': 4, '1.feature_2': 2},
{'observation_id': '3', '0.feature_1': 5, '0.feature_2': 2, '1.feature_1': 5, '1.feature_2': 3}]
# Desired output:
observation_id day feature_1 feature_2
0 1 0 2 2
1 1 1 3 1
2 2 0 7 3
3 2 1 4 2
4 3 0 5 2
5 3 1 5 3
Я пробовал следующее, но это не так. не дает желаемого результата
df = pd.DataFrame(x)
pd.wide_to_long(df, stubnames=["0", "1"], i="observation_id", j="feature", sep=".", suffix='\w+').reset_index()
# output:
observation_id feature 0 1
0 1 feature_1 2 3
1 2 feature_1 7 4
2 3 feature_1 5 5
3 1 feature_2 2 1
4 2 feature_2 3 2
5 3 feature_2 2 3
Есть идеи, как это сделать?
Спасибо!