Si usted vino aquí en busca de información sobre cómo combinar una
DataFrame
ySeries
en el índice , por favor vaya a esta respuesta .La intención original del OP era preguntar cómo asignar elementos de serie como columnas a otro DataFrame . Si está interesado en conocer la respuesta a esto, mire la respuesta aceptada por EdChum.
Lo mejor que se me ocurre es
df = pd.DataFrame({'a':[1, 2], 'b':[3, 4]}) # see EDIT below
s = pd.Series({'s1':5, 's2':6})
for name in s.index:
df[name] = s[name]
a b s1 s2
0 1 3 5 6
1 2 4 5 6
¿Alguien puede sugerir una mejor sintaxis / un método más rápido?
Mis intentos:
df.merge(s)
AttributeError: 'Series' object has no attribute 'columns'
y
df.join(s)
ValueError: Other Series must have a name
EDITAR Las dos primeras respuestas publicadas destacaron un problema con mi pregunta, así que use lo siguiente para construir df
:
df = pd.DataFrame({'a':[np.nan, 2, 3], 'b':[4, 5, 6]}, index=[3, 5, 6])
con el resultado final
a b s1 s2
3 NaN 4 5 6
5 2 5 5 6
6 3 6 5 6
df
ys
, esta respuesta me devuelve un marco de datos vacío, no el resultado solicitado en la pregunta. No queremos hacer coincidir en el índice; queremos transmitir loss
valores a todas las filas dedf
.