2013-12-11 2 views
6

Если у меня есть DataFrame:Как я могу конкатенировать серию на DataFrame с помощью Pandas?

students = pd.DataFrame([ 
    ['Alex'], 
    ['Lauren'], 
]) 

Как я могу сцепить Series и создать новый DataFrame? Например, я хотел бы:

>>> marks = pd.Series([.8, .75]) 
>>> students.concat(marks).values 
[['Alex', .8], 
['Lauren', .75]] 

Я знаю, что я мог бы использовать:

students['marks'] = marks 

Но что бы мутировать students.

Я пробовал:

>>> pd.concat([students, marks]) 
… 
AttributeError: 'Series' object has no attribute '_data' 

ответ

6

Вы можете преобразовать в DataFrame и конкатенировать впоследствии :

>>> pd.concat([students, pd.DataFrame(marks)], axis=1) 
     0  0 
0 Alex 0.80 
1 Lauren 0.75 
0

Чтобы сохранить свой первоначальный dataframe, вы можете сначала скопировать dataframe, а затем добавить столбец:

students2 = students.copy(deep=True) 
students2['marks'] = marks 
+0

Ya, есть несколько способов, которыми я мог бы это сделать, явно копируя DataFrame ... но я хотел бы сделать это в одном выражении, чтобы я мог передать результат еще что-то еще. –

+0

В этом случае вы не могли бы просто определить свою собственную функцию, которая выполняет вышеизложенное, и возвращает новый dataframe? – qmorgan

+2

Я мог бы! Но похоже, что это должно быть довольно стандартная утилита, и я хотел бы узнать «нормальный» способ сделать это. –

0

В этом случае я обычно делать

students["marks"] = marks

Но pd.concat работает также.

Смежные вопросы