#python #pandas
Вопрос:
У меня есть несколько series
объектов в моем list
, где каждая запись содержит:
1.номер месяца (январь: 1, февраль:2 …) в качестве ключевого
2.объект серии как значение
подобный этому
x = [
{1: AAA 1
BBB 1
CCC 1
DDD 1
Name: test1, dtype: int64},
{2: AAA 3
CCC 2
EEE 1
Name: test1, dtype: int64}
]
И я хотел бы объединить эти серии в один фрейм данных, который должен выглядеть так
Index, month, AAA, BBB, CCC, DDD, EEE
1 1 1 1 1 1 NaN
2 2 3 NaN 2 NaN 1
Комментарии:
1. прочитал документ о панд.конкат?
2. Каждый дикт имеет только одну серию, как в образцах данных?
Ответ №1:
Используйте вложенное понимание диктантов для выравнивания списка диктов и перехода к concat
последней транспонировке:
x = [{1:pd.Series([1,1,1], index=list('abc'))}, {2:pd.Series([2,1], index=list('bc'))}]
print (x)
[{1: a 1
b 1
c 1
dtype: int64}, {2: b 2
c 1
dtype: int64}]
df = pd.concat({k: v for y in x for k, v in y.items()}, axis=1).T
print (df)
a b c
1 1.0 1.0 1.0
2 NaN 2.0 1.0