Ответы:
Я думаю, что 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
a.to_frame().join(b)
< v0.23
a.to_frame().join(b.to_frame())
Панды автоматически выровняют эти переданные последовательно и создадут объединенный индекс. Здесь они совпадают. reset_index
перемещает индекс в столбец.
In [2]: s1 = Series(randn(5),index=[1,2,4,5,6])
In [4]: s2 = Series(randn(5),index=[1,2,4,5,6])
In [8]: DataFrame(dict(s1 = s1, s2 = s2)).reset_index()
Out[8]:
index s1 s2
0 1 -0.176143 0.128635
1 2 -1.286470 0.908497
2 4 -0.995881 0.528050
3 5 0.402241 0.458870
4 6 0.380457 0.072251
Пример кода:
a = pd.Series([1,2,3,4], index=[7,2,8,9])
b = pd.Series([5,6,7,8], index=[7,2,8,9])
data = pd.DataFrame({'a': a,'b':b, 'idx_col':a.index})
Панды позволяет создать DataFrame
из dict
с Series
как значения и имена столбцов в качестве ключей. Когда он находит значение Series
в качестве значения, он использует Series
индекс как часть DataFrame
индекса. Такое выравнивание данных является одним из главных преимуществ Pandas. Следовательно, если у вас нет других потребностей, только что созданная копия DataFrame
имеет дублированное значение. В приведенном выше примере data['idx_col']
имеет те же данные, что и data.index
.
Если я могу ответить на это.
Основы, лежащие в основе преобразования ряда в фрейм данных, - это понять, что
1. На концептуальном уровне каждый столбец во фрейме данных является серией.
2. И каждое имя столбца является ключевым именем, которое сопоставляется с серией.
Если вы помните о двух вышеизложенных понятиях, вы можете придумать множество способов преобразования рядов во фрейм данных. Одно простое решение будет таким:
Создайте две серии здесь
import pandas as pd
series_1 = pd.Series(list(range(10)))
series_2 = pd.Series(list(range(20,30)))
Создайте пустой фрейм данных с нужными именами столбцов
df = pd.DataFrame(columns = ['Column_name#1', 'Column_name#1'])
Поместите значение ряда во фрейм данных, используя концепцию отображения
df['Column_name#1'] = series_1
df['Column_name#2'] = series_2
Проверьте результаты сейчас
df.head(5)
Упрощение решения на основе join()
:
df = a.to_frame().join(b)
Я использовал pandas для преобразования моего массива или iseries в кадр данных, затем добавил и добавил дополнительный столбец по ключу как «прогноз». Если вам нужно преобразовать dataframe обратно в список, используйте values.tolist ()
output=pd.DataFrame(X_test)
output['prediction']=y_pred
list=output.values.tolist()