Zusammenführen von Dataframes

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Bebbi
User
Beiträge: 144
Registriert: Dienstag 21. April 2020, 19:21

Ich habe versucht , mit folgendem Code zwei Dataframes zusammenzuführen.

Code: Alles auswählen

stocks_data = pd.concat([stocks_data,Rate], axis=1)
stocks_data.head()
Bei stocks_data befinden sich 38 Spalten, be Rate lediglich 1. Die Zusammenführung funktioniert recht gut. Leider wird mir aber, aus welchem Grund auch immer die Rate zwei Mal angezeigt. Die anderen Daten, welche alle aus stocks_data kommen werden richtigerweise nur einmal angezeigt. Ich brauch allderdings auch Rate nur einmal. Wie kann ich das ändern?

Und noch eine Zusatzfrage. Bei 38 Spalten zeigt es mir logischerweise nicht alle an. Ist es trotzdem möglich diese aufzurufen? Falls ja, wie?

Danke
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Bebbi: Was bedeutet ”zweimal angezeigt”? Bei mir wird im folgenden nichts zweimal angezeigt:

Code: Alles auswählen

In [12]: A                                                                      
Out[12]: 
   A  B
0  1  4
1  2  5
2  3  6

In [13]: B                                                                      
Out[13]: 
   C
0  7
1  8
2  9

In [14]: pd.concat([A, B], axis=1)                                              
Out[14]: 
   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9
Was meinst Du mit ”aufrufen”? Du kannst das Terminalfenster grösser machen. Oder Spalten(bereiche) von dem Dataframe selektieren die nicht so breit sind, dass sie nicht mehr angezeigt werden können.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Bebbi
User
Beiträge: 144
Registriert: Dienstag 21. April 2020, 19:21

@ _blackjack_

Ich meine "zweimal angezeigt", dass es bei Deinem Ergebnis dann so aussehen würde:

Code: Alles auswählen

In [14]: pd.concat([A, B], axis=1)                                              
Out[14]: 
   A  B  C  C
0  1  4  7  7
1  2  5  8  8
2  3  6  9  9
Aus irgendeinem Grund ist das bei mir der Fall..
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

@Beppi: dann zeig doch dieses Beispiel mit Inputdaten. Es hilft Dir ja nichts, wenn man sieht, dass in __blackjacks__ Beispiel alles funktioniert.
Bebbi
User
Beiträge: 144
Registriert: Dienstag 21. April 2020, 19:21

also ich habe den Datafram stocks_data, welcher wie folgt gebildet wird

Code: Alles auswählen

# Concatenate the different dataframes

stocks_data = pd.concat([ABBN,ADEN,CFR,CSGN,GEBN,GIVN,LHN,LONN,NESN,NOVN,SCMN,SGSN,SIKA,SLHN,ROG,SREN,UBSG,UHR,ZURN], axis=1)
stocks_data.head()
Dieser Datafram wird mir danach auch sauber angezeigt. Danach formatiere ich das Datumsfeld, was wie folgt aussieht:

Code: Alles auswählen

# Format Datetime

stocks_data['Datum'] = pd.to_datetime(stocks_data['Datum'])
stocks_data.head()
Danach erstelle ich in einen zweiten Dataframe mit dem benötigten Zins:

Code: Alles auswählen

# load 3month CHF Liborrate

LIBOR = pd.read_csv('C:/Users/Startklar/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Anaconda3 (64-bit)/3m_LIBOR_CHF.csv', sep=" ", names=['Datum','Rate'])
LIBOR.head()
Im nächsten Schritt nehme ich das Datum aus dem oben erstellten Dataframe, da das erste Frame (stocks_data) bereits über ein solches verfügt.

Code: Alles auswählen

# kick out the date column
Rate = LIBOR.loc[:,['Rate']]
Rate.head()
Auch das wird ohne Probleme vollzogen.

Jetzt möchte ich den Dataframe stocks_data und den obigen (Rate) mit folgendem Code zusammenführen:

Code: Alles auswählen

# Concatenate stocks and rate

stocks_data = pd.concat([stocks_data,Rate], axis=1)
stocks_data.head()
Das Ergebnis sieht nun wie folgt aus:

Code: Alles auswählen


Datum	ABBN_Preis	ADEN_Preis	CFR_Preis	CSGN_Preis	GEBN_Preis	GIVN_Preis	LHN_Preis	LONN_Preis	NESN_Preis	...	log_ret_SCMN	log_ret_SGSN	log_ret_SIKA	log_ret_SLHN	log_ret_ROG	log_ret_SREN	log_ret_UHR	log_ret_ZURN	Rate	Rate
0	2010-09-30	20.71	51.35	47.31	38.4512	175.0	1004.0	60.10	77.76	52.35	...	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN	0.17833	0.17833
1	2010-10-29	20.38	55.00	49.08	37.2153	188.5	1014.0	58.43	79.80	53.90	...	3.666499	-0.822009	5.420402	7.404414	7.394828	9.321934	1.716320	4.499910	0.16833	0.16833
2	2010-11-30	19.45	57.15	54.10	33.9103	202.7	1006.0	61.57	71.74	54.55	...	-0.512134	4.226857	1.223578	-7.583305	-4.747615	-2.007328	6.908150	-7.586575	0.17167	0.17167
3	2010-12-30	20.83	61.25	55.00	34.4871	216.2	1009.0	67.29	69.43	54.75	...	0.512134	-4.608537	1.619887	19.093846	-0.582243	8.156806	3.366993	8.124767	0.17000	0.17000
4	2011-01-31	22.29	61.15	51.35	38.6435	199.2	935.0	62.95	68.87	51.05	...	1.304997	-2.125684	0.851069	10.853594	4.705073	7.005261	-9.612625	6.280808	0.17000	0.17000
Alles stimmt, bis auf die letzten beiden Spalten, wo leider zweimal "Rate" erscheint.
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Bebbi: Ich sehe am Code jetzt gerade nichts offensichtliches, wir kennen die Daten ja aber auch nicht.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten