Mam dwie Serie s1
i s2
te same (nie następujące po sobie) wskaźniki. Jak połączyć s1
i s2
być dwiema kolumnami w ramce danych i zachować jeden z indeksów jako trzecią kolumnę?
278
Myślę, że concat
to dobry sposób na zrobienie tego. Jeśli są obecne, używa atrybutów nazw Serii jako kolumn (w przeciwnym razie po prostu je numeruje):
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
Uwaga: dotyczy to więcej niż 2 serii.
pd.concat([list_of_dataframes])
kontra konkatowanie wiele razynew_df = pd.DataFrame(); for df in list_of_dsf: new_df = pd.concat([new_df, df])
lub podobnie.Dlaczego nie użyjesz .to_frame, jeśli oba mają te same indeksy?
> =
v0.23
<
v0.23
źródło
Pandy automatycznie dopasują te przekazywane szeregowo i utworzą wspólny indeks. Zdarza się, że tutaj są takie same.
reset_index
przenosi indeks do kolumny.źródło
Przykładowy kod:
Pandy pozwalają tworzyć
DataFrame
zdict
zaSeries
jako wartości i nazwy kolumn jako klucze. Gdy znajdzieSeries
jako wartość, używaSeries
indeksu jako częściDataFrame
indeksu. To wyrównanie danych jest jednym z głównych atutów Pand. W konsekwencji, chyba że masz inne potrzeby, świeżo utworzonaDataFrame
ma zduplikowaną wartość. W powyższym przykładziedata['idx_col']
ma te same dane, codata.index
.źródło
Jeśli mogę na to odpowiedzieć.
Podstawą konwersji serii na ramkę danych jest zrozumienie tego
1. Na poziomie koncepcyjnym każda kolumna w ramce danych jest serią.
2. I każda nazwa kolumny to nazwa klucza, która jest odwzorowana na serię.
Jeśli pamiętasz o dwóch koncepcjach, możesz pomyśleć o wielu sposobach konwersji serii na ramkę danych. Jedno proste rozwiązanie będzie takie:
Utwórz tutaj dwie serie
Utwórz pustą ramkę danych z żądanymi nazwami kolumn
Umieść wartość szeregu w ramce danych za pomocą koncepcji mapowania
Sprawdź wyniki teraz
źródło
Nie jestem pewien, czy w pełni rozumiem twoje pytanie, ale czy właśnie to chcesz zrobić?
(
index=s1.index
nie jest tu nawet konieczne)źródło
Uproszczenie rozwiązania oparte na
join()
:źródło
Użyłem pand, aby przekonwertować moją tablicę numpy lub iseries na ramkę danych, a następnie dodałem dodatkową kolumnę według klucza jako „przewidywanie”. Jeśli potrzebujesz przekonwertować ramkę danych z powrotem na listę, użyj wartości.tolist ()
źródło