Nur eine Zeile transponieren

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Karambit
User
Beiträge: 7
Registriert: Mittwoch 26. August 2020, 15:37

Hallo,

ich bin leider nicht fündig geworden.

Gibt es eine Möglichkeit nur eine Zeile in einem DataFrame in eine Spalte umzuwandeln/zu transponieren?

Viele Grüße
Karambit
Sirius3
User
Beiträge: 17761
Registriert: Sonntag 21. Oktober 2012, 17:20

Transponieren heißt transpose: dataframe.transpose()
Karambit
User
Beiträge: 7
Registriert: Mittwoch 26. August 2020, 15:37

Danke für die Antwort, aber ich meinte nur, genau eine Zeile.

Location First Tooltip
Period
2016 Afghanistan 0.0
2015 Afghanistan 4.8
2010 Afghanistan 5.1
2005 Afghanistan 6.3
2000 Afghanistan 5.7

So sieht das DataFrame aus, aber ich möchte es so umwandeln:

Afghanistan <anderes Land> <anderes Land> ...
Period
2016 0.0
2015 4.8
2010 5.1
2005 6.3
2000 5.7

Vielleicht eine einfachere Idee?

Gruß
Karambit
Bl3nder
User
Beiträge: 139
Registriert: Freitag 3. Januar 2020, 17:07

Leider versteht man die Aufgabenstellung überhaupt nicht du hast nach einer Möglichkeit gefragt eine Zeile in eine Spalte umzuwandeln diese Frage hat Sirius dir richtig beantwortet , wenn du nur eine Zeile gewandelt haben möchtest.


Beispiel:

Ich habe mal versucht deinen Datenframe nachzubauen jedoch sieht man weder die Spaltennamen etc deswegen habe Ich improvisiert:

Code: Alles auswählen

df_index = pd.Index([2016, 2015, 2010, 2005, 2000])
df = pd.DataFrame({0: ["Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan"],
                   1: [0.0, 4.8, 5.1, 6.3, 5.7]}, index=df_index)
df.index = df.index.set_names("Period")
Ausgabe:

Code: Alles auswählen

                  0    1
Period                  
2016    Afghanistan  0.0
2015    Afghanistan  4.8
2010    Afghanistan  5.1
2005    Afghanistan  6.3
2000    Afghanistan  5.7
Da Ich nicht genau weiß was du möchtest,da deine zweite Frage für mich ehr wie ein formatieren des Datenframes klingt als nach transpose:

Code: Alles auswählen

df_index = pd.Index([2016, 2015, 2010, 2005, 2000])
df = pd.DataFrame({0: ["Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan"],
                   1: [0.0, 4.8, 5.1, 6.3, 5.7]}, index=df_index)
df.index = df.index.set_names("Period")

df = df.drop(columns=0)
df = df.rename(columns={1: "Afghanistan"})


Ausgabe:

Code: Alles auswählen

        Afghanistan
Period             
2016            0.0
2015            4.8
2010            5.1
2005            6.3
2000            5.7

Wann benutzt man transpose? Meiner Meinung nach wenn man die Spalten / Columns und die Zeilen/ Rows getauscht haben möchte bzw Index & Columns:

Code: Alles auswählen

deutschland_df = pd.DataFrame([54, 74, 90, 2010, 2022],
                              index=["Deutschland", "Deutschland", "Deutschland", "Deutschland", "Deutschland"])
Ausgabe:

Code: Alles auswählen

                0
Deutschland    54
Deutschland    74
Deutschland    90
Deutschland  2010
Deutschland  2022

Code: Alles auswählen

deutschland_transpose = deutschland_df.transpose()
Ausgabe:

Code: Alles auswählen

   Deutschland  Deutschland  Deutschland  Deutschland  Deutschland
0           54           74           90         2010         2022

Zum Abschluss noch ein kleiner Tipp .... SO WIRD ES NICHT KLAPPEN:

Code: Alles auswählen

df_index = pd.Index([2016, 2015, 2010, 2005, 2000])
df = pd.DataFrame({0: ["Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan"],
                   1: [0.0, 4.8, 5.1, 6.3, 5.7]}, index=df_index)
df.index = df.index.set_names("Period")

df = df.drop(columns=0)
df = df.rename(columns={1: "Afghanistan"})

afghanistan_series = df.loc[2016]

Ausgabe:

[code]
Afghanistan    0.0

df_index = pd.Index([2016, 2015, 2010, 2005, 2000])
df = pd.DataFrame({0: ["Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan"],
1: [0.0, 4.8, 5.1, 6.3, 5.7]}, index=df_index)
df.index = df.index.set_names("Period")

df = df.drop(columns=0)
df = df.rename(columns={1: "Afghanistan"})

afghanistan_series = df.loc[2016]
afghanistan_series = afghanistan_series.T

Code: Alles auswählen


Ausgabe:

[code]
Afghanistan    0.0
Wie man sieht macht es kein Unterschied da wird mit loc eine Series zurückbekommen und diese haben keine Columns ....

Code: Alles auswählen

afghanistan_series = pd.DataFrame(df.loc[2016])
Ausgabe:

Code: Alles auswählen

             2016
Afghanistan   0.0

Code: Alles auswählen

afghanistan_series = pd.DataFrame(df.loc[2016])
afghanistan_series = afghanistan_series.T
Ausgabe :

Code: Alles auswählen

      Afghanistan
2016          0.0

Man sieht hier den Unterschied noch besser wenn es mehrere Werte werden:

Code: Alles auswählen

df_index = pd.Index([2016, 2015, 2010, 2005, 2000])
df = pd.DataFrame({0: ["Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan"],
                   1: [0.0, 4.8, 5.1, 6.3, 5.7],
                   2: [1, 2, 3, 4, 5],
                   3: [6, 7, 8, 9, 10],
                   4: [11, 12, 13, 14, 15]
                   },
                  index=df_index)

df_series_to_frame = pd.DataFrame(df.loc[2016])
Ausgabe:

Code: Alles auswählen

          2016
0  Afghanistan
1            0
2            1
3            6
4           11


Code: Alles auswählen

df_index = pd.Index([2016, 2015, 2010, 2005, 2000])
df = pd.DataFrame({0: ["Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan"],
                   1: [0.0, 4.8, 5.1, 6.3, 5.7],
                   2: [1, 2, 3, 4, 5],
                   3: [6, 7, 8, 9, 10],
                   4: [11, 12, 13, 14, 15]
                   },
                  index=df_index)

df_series_to_frame = pd.DataFrame(df.loc[2016]).T
Ausgabe:

Code: Alles auswählen

                0  1  2  3   4
2016  Afghanistan  0  1  6  11

Ich hoffe Ich konnte dir helfen.
Eine Vision ohne Aktion bleibe eine Illusion
Antworten