Jeśli przyszedłeś tutaj, szukając informacji na temat łączenia znaków
DataFrame
iSeries
w indeksie , spójrz na tę odpowiedź .Pierwotnym zamiarem PO było zapytanie, jak przypisać elementy serii jako kolumny do innej ramki DataFrame . Jeśli chcesz poznać odpowiedź na to pytanie, spójrz na odpowiedź zaakceptowaną przez EdChum.
Najlepsze, co mogę wymyślić, to
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
Czy ktoś może zaproponować lepszą składnię / szybszą metodę?
Moje próby:
df.merge(s)
AttributeError: 'Series' object has no attribute 'columns'
i
df.join(s)
ValueError: Other Series must have a name
EDYTUJ Pierwsze dwie opublikowane odpowiedzi zwróciły uwagę na problem z moim pytaniem, więc do skonstruowania użyj poniższego df
:
df = pd.DataFrame({'a':[np.nan, 2, 3], 'b':[4, 5, 6]}, index=[3, 5, 6])
z końcowym wynikiem
a b s1 s2
3 NaN 4 5 6
5 2 5 5 6
6 3 6 5 6
df
i w pytanius
, ta odpowiedź zwraca mi pustą ramkę danych, a nie wynik żądany w pytaniu. Nie chcemy dopasowywać się do indeksu; chcemy rozgłaszaćs
wartości do wszystkich wierszydf
.