Seite 1 von 1

Zusammenführen von Dataframes

Verfasst: Donnerstag 8. Oktober 2020, 20:32
von Bebbi
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

Re: Zusammenführen von Dataframes

Verfasst: Donnerstag 8. Oktober 2020, 21:13
von __blackjack__
@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.

Re: Zusammenführen von Dataframes

Verfasst: Freitag 9. Oktober 2020, 11:35
von Bebbi
@ _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..

Re: Zusammenführen von Dataframes

Verfasst: Freitag 9. Oktober 2020, 11:40
von Sirius3
@Beppi: dann zeig doch dieses Beispiel mit Inputdaten. Es hilft Dir ja nichts, wenn man sieht, dass in __blackjacks__ Beispiel alles funktioniert.

Re: Zusammenführen von Dataframes

Verfasst: Freitag 9. Oktober 2020, 11:51
von Bebbi
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.

Re: Zusammenführen von Dataframes

Verfasst: Freitag 9. Oktober 2020, 12:24
von __blackjack__
@Bebbi: Ich sehe am Code jetzt gerade nichts offensichtliches, wir kennen die Daten ja aber auch nicht.