Heim >Backend-Entwicklung >Python-Tutorial >Wie forme ich einen Pandas-DataFrame mithilfe der Melt-Funktion und eines Wörterbuchs um?

Wie forme ich einen Pandas-DataFrame mithilfe der Melt-Funktion und eines Wörterbuchs um?

Barbara Streisand
Barbara StreisandOriginal
2024-11-22 07:08:10948Durchsuche

How to Reshape a Pandas DataFrame Using the Melt Function and a Dictionary?

Pandas Melt Function: Umformen von Datenrahmen für die Analyse

Frage:

Betrachten Sie einen Datenrahmen mit mehrere Spalten und ein Wörterbuch:

df = pd.DataFrame([[2, 4, 7, 8, 1, 3, 2013], [9, 2, 4, 5, 5, 6, 2014]], columns=['Amy', 'Bob', ' Carl“, „Chris“, „Ben“, „Andere“, 'Jahr'])<br>

d = {'A': ['Amy'], 'B': ['Bob', 'Ben'], 'C': ['Carl', 'Chris']}<br>

Wie formen wir den Datenrahmen um? ähneln der folgenden Struktur, in der die Spalten zusammengeführt und gruppiert werden?

    Gruppenname Jahr Wert<br> 0 A Amy 2013 2<br> 1 A Amy 2014 9<br> 2 B Bob 2013 4<br> 3 B Bob 2014 2<br> 4 B Ben 2013 1<br> 5 B Ben 2014 5<br> 6 C Carl 2013 7<br> 7 C Carl 2014 4<br> 8 C Chris 2013 8<br> 9 C Chris 2014 5<br>10 Andere 2013 3<br>11 Andere 2014 6<br>

Antwort:

Um den Datenrahmen mithilfe der Schmelzfunktion umzuformen, befolgen Sie diese Schritte:

  1. Schmelzen Sie den Datenrahmen:Schmelzen Sie den Datenrahmen mithilfe der Schmelze in ein breites Format Funktion. Dadurch werden die Spalten in Zeilen umgewandelt, wobei der Parameter id_vars verwendet wird, um die Spalten anzugeben, die intakt bleiben sollen.

    m = pd.melt(df, id_vars=['Year'], var_name='Name')
  2. Erstellen Sie ein Zuordnungswörterbuch: Formieren Sie das um dictionary d, um eine Zuordnung zwischen Spaltennamen und Gruppe zu erstellen Namen.

    d2 = {}
    for k, v in d.items():
        for item in v:
            d2[item] = k
  3. 'Gruppe' hinzufügen: Ordnen Sie das neu erstellte Wörterbuch d2 der Spalte 'Name' zu, um die Spalte 'Gruppe' hinzuzufügen.

    m['Group'] = m['Name'].map(d2)
  4. „Andere“ verschieben: „Andere“-Werte aus verschieben Spalte „Name“ in die Spalte „Gruppe“.

    mask = m['Name'] == 'Other'
    m.loc[mask, 'Name'] = ''
    m.loc[mask, 'Group'] = 'Other'

Der resultierende Datenrahmen enthält die gewünschte abgeflachte Struktur:

print(m)

    Year   Name  value Group
0   2013    Amy      2      A
1   2014    Amy      9      A
2   2013    Bob      4      B
3   2014    Bob      2      B
4   2013   Carl      7      C
...    ...    ...    ...    ...
7   2014  Chris      5      C
8   2013    Ben      1      B
9   2014    Ben      5      B
10  2013             3  Other
11  2014             6  Other

Das obige ist der detaillierte Inhalt vonWie forme ich einen Pandas-DataFrame mithilfe der Melt-Funktion und eines Wörterbuchs um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn