2017-11-24 3 views
0

einstellt Ich habe zwei Reihen. Einer sieht wie folgt aus:Wie man den Index einer Reihe von einer anderen Reihe

2016-01-04 00:00:00+00:00 194.972 
2016-01-05 00:00:00+00:00 195.379 
2016-01-06 00:00:00+00:00 192.838 
2016-01-07 00:00:00+00:00 188.220 

Das Datum ist sein Index.

Eine andere Serie sieht wie folgt:

0  186.679615 
1  186.409242 
2  185.783922 
3  185.598504 

Was will ich gesetzt/den Index der zweiten Serie mit dem Index von der ersten Serie zu ersetzen, so dass es wie folgt aussehen:

2016-01-04 00:00:00+00:00 186.679615 
2016-01-05 00:00:00+00:00 186.409242 
2016-01-06 00:00:00+00:00 185.783922 
2016-01-07 00:00:00+00:00 185.598504 

Wenn das nicht möglich ist, könnte ich vielleicht die Spalte aus der zweiten Serie zu der ersten hinzufügen, damit sie wie folgt aussieht?

2016-01-04 00:00:00+00:00 194.972 186.679615 
2016-01-05 00:00:00+00:00 195.379 186.409242 
2016-01-06 00:00:00+00:00 192.838 185.783922 
2016-01-07 00:00:00+00:00 188.220 185.598504 

Antwort

0

Pandas Series und Dataframes Indizes können durch Zuweisung geändert werden. Wenn also Ihre beiden Serien werden als s1 und s2, dann

s2.index = s1.index 

ordnet s1 ‚s Index s2. Beachten Sie, dass die beiden Serien die gleiche Länge haben müssen, sonst wird ValueError ausgelöst.


Alternativ einen Datenrahmen mit s1 und s2 bilden, Sie

df = pd.DataFrame({'s1': s1.values, 's2': s2.values}, index=s1.index) 

Beachten Sie, dass s1.values gibt eine NumPy Array von s1 Werte ohne den Index nutzen könnten. Um diesen Datenrahmen zu bilden, ist es wichtig, .values hier zu verwenden, so dass Pandas nicht versucht, die Werte von s1 und s2 basierend auf ihren jeweiligen (und abweichenden!) Indizes auszurichten.


Unterschied zu verdeutlichen, betrachten:

import pandas as pd 
s1 = pd.Series(range(4)) 
s2 = pd.Series(range(4), index=list('ABCD')) 
df = pd.DataFrame({'s1': s1.values, 's2': s2.values}, index=s1.index) 
# s1 s2 
# 0 0 0 
# 1 1 1 
# 2 2 2 
# 3 3 3 

df2 = pd.DataFrame({'s1': s1, 's2': s2}, index=s1.index) 
# s1 s2 
# 0 0 NaN 
# 1 1 NaN 
# 2 2 NaN 
# 3 3 NaN 

Im zweiten Beispiel richtet pd.DataFrame Werte von s1 und s2 basierend auf ihren jeweiligen Indizes. index=s1.index schneidet die Zeilen aus, so dass nur Werte mit Indexbeschriftungen von s1.index enthalten sind. Da s2 keine Werte mit diesen Indexbeschriftungen hat, werden die Werte mit NaN s gefüllt.

+0

Schön, vielen Dank! – thomas2013ch