Відповіді:
Я думаю 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
індексу. Це вирівнювання даних є одним з головних переваг Панди. Отже, якщо у вас немає інших потреб, щойно створене 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)
Я використовував панди, щоб перетворити свій numpy масив або ісерії в кадр даних, потім додав і додав додатковий стовпець за ключем як "прогнозування". Якщо вам потрібен кадр даних, перетворений назад до списку, тоді використовуйте values.tolist ()
output=pd.DataFrame(X_test)
output['prediction']=y_pred
list=output.values.tolist()