Как присоединиться к серии к DataFrame?

Есть ли способ напрямую присоединиться к серии к DataFrame?

Соединение будет находиться в поле кадра данных и по индексу серии.

Единственный способ, которым я нашел, - сначала преобразовать серию в фреймворк данных, как в приведенном ниже коде.

import numpy as np
import pandas as pd
df = pd.DataFrame()
df['a'] = np.arange(0, 4)
df['b'] = np.arange(100, 104)
s = pd.Series(data=np.arange(100, 103))
# this doesn't work
# myjoin = pd.merge(df, s, how='left', left_on='a', right_index=True)
# this does
s = s.reset_index()
# s becomes a Dataframe
# note you cannot reset the index of a series inplace
myjoin = pd.merge(df, s, how='left', left_on='a', right_on='index')
print myjoin
3 ответа

Я думаю, http://pandas.pydata.org/pandas-docs/stable/generated/pandas.concat.html может помочь.

Например, внутреннее/внешнее соединение.

pd.concat((df,s), axis=1)
Out[26]: 
 a b 0
0 0 100 100
1 1 101 101
2 2 102 102
3 3 103 NaN
In [27]: pd.concat((df,s), axis=1, join='inner')
Out[27]: 
 a b 0
0 0 100 100
1 1 101 101
2 2 102 102


Это очень поздний ответ, но для меня работала сборка данных с колонками, которые вы хотите получить в своей серии, назовите эту серию как нужный вам индекс, добавьте серию в dataframe (если у вас есть дополнительные элементы в серии, которые они добавляются в фреймворк данных, что в некоторых приложениях может быть удобным), затем присоедините окончательный блок данных этим индексом к исходному фреймворку данных, который вы хотите расширить. Согласовано это не прямо, но это все же самый удобный способ, если у вас много серий, вместо того, чтобы сначала преобразовывать каждый в фреймворк данных.


Попробуйте выполнить concat():

import numpy as np
import pandas as pd
df= pd.DataFrame()
df['a']= np.arange(0,4)
df['b']= np.arange(100,104)
s =pd.Series(data = np.arange(100,103))
new_df = pd.concat((df, s), axis=1)
print new_df

Отпечатки:

a b 0
0 0 100 100
1 1 101 101
2 2 102 102
3 3 103 NaN

licensed under cc by-sa 3.0 with attribution.