У меня две серии s1
и s2
с одинаковыми (непоследовательными) показателями. Как объединить s1
и s2
чтобы быть две колонки в DataFrame и сохранить один из показателей , как третий столбец?
278
Я думаю, что concat
это хороший способ сделать это. Если они присутствуют, он использует атрибуты имени Серии в качестве столбцов (в противном случае он просто нумерует их):
In [1]: s1 = pd.Series([1, 2], index=['A', 'B'], name='s1')
In [2]: s2 = pd.Series([3, 4], index=['A', 'B'], name='s2')
In [3]: pd.concat([s1, s2], axis=1)
Out[3]:
s1 s2
A 1 3
B 2 4
In [4]: pd.concat([s1, s2], axis=1).reset_index()
Out[4]:
index s1 s2
0 A 1 3
1 B 2 4
Примечание: это распространяется на более чем 2 серии.
pd.concat([list_of_dataframes])
а не многократныйnew_df = pd.DataFrame(); for df in list_of_dsf: new_df = pd.concat([new_df, df])
или аналогичный.Почему бы вам просто не использовать .to_frame, если оба имеют одинаковые индексы?
> =
v0.23
<
v0.23
источник
Панды автоматически выровняют эти переданные последовательно и создадут объединенный индекс. Здесь они совпадают.
reset_index
перемещает индекс в столбец.источник
Пример кода:
Панды позволяет создать
DataFrame
изdict
сSeries
как значения и имена столбцов в качестве ключей. Когда он находит значениеSeries
в качестве значения, он используетSeries
индекс как частьDataFrame
индекса. Такое выравнивание данных является одним из главных преимуществ Pandas. Следовательно, если у вас нет других потребностей, только что созданная копияDataFrame
имеет дублированное значение. В приведенном выше примереdata['idx_col']
имеет те же данные, что иdata.index
.источник
Если я могу ответить на это.
Основы, лежащие в основе преобразования ряда в фрейм данных, - это понять, что
1. На концептуальном уровне каждый столбец во фрейме данных является серией.
2. И каждое имя столбца является ключевым именем, которое сопоставляется с серией.
Если вы помните о двух вышеизложенных понятиях, вы можете придумать множество способов преобразования рядов во фрейм данных. Одно простое решение будет таким:
Создайте две серии здесь
Создайте пустой фрейм данных с нужными именами столбцов
Поместите значение ряда во фрейм данных, используя концепцию отображения
Проверьте результаты сейчас
источник
Не уверен, что я полностью понимаю ваш вопрос, но вы этого хотите?
(
index=s1.index
здесь даже нет необходимости)источник
Упрощение решения на основе
join()
:источник
Я использовал pandas для преобразования моего массива или iseries в кадр данных, затем добавил и добавил дополнительный столбец по ключу как «прогноз». Если вам нужно преобразовать dataframe обратно в список, используйте values.tolist ()
источник