So extrahieren Sie Tupel aus Pandas-Datenrahmenspalten
Problem:
In einem Pandas-Datenrahmen , ist es üblich, Spalten zu haben, die Tupel enthalten. Allerdings kann die Arbeit mit diesen Tupeln umständlich sein. Um die Analyse zu erleichtern, ist es oft wünschenswert, diese Spalten in mehrere Spalten aufzuteilen, die die einzelnen Tupelelemente enthalten.
Lösung:
Um eine Spalte mit Tupeln in separate Spalten umzuwandeln , folgen Sie diesen Schritten:
Konvertieren Sie die Spalte mit der tolist()-Methode in eine Liste von Tupeln:
<code class="python">column_list = column.tolist()</code>
Erstellen Sie eine neue Datenrahmen aus der Liste der Tupel:
<code class="python">new_df = pd.DataFrame(column_list, index=dataframe.index)</code>
Weisen Sie den neuen Datenrahmen als neue Spalten dem ursprünglichen Datenrahmen zu:
<code class="python">dataframe[['column_a', 'column_b']] = new_df[['0', '1']]</code>
Beispiel:
Betrachten Sie den folgenden Datenrahmen:
<code class="python">>>> d1 y norm test y norm train len(y_train) len(y_test) \ 0 64.904368 116.151232 1645 549 1 70.852681 112.639876 1645 549 SVR RBF \ 0 (35.652207342877873, 22.95533537448393) 1 (39.563683797747622, 27.382483096332511) LCV \ 0 (19.365430594452338, 13.880062435173587) 1 (19.099614489458364, 14.018867136617146) RIDGE CV \ 0 (4.2907610988480362, 12.416745648065584) 1 (4.18864306788194, 12.980833914392477) RF \ 0 (9.9484841581029428, 16.46902345373697) 1 (10.139848213735391, 16.282141345406522) GB \ 0 (0.012816232716538605, 15.950164822266007) 1 (0.012814519804493328, 15.305745202851712) ET DATA 0 (0.00034337162272515505, 16.284800366214057) j2m 1 (0.00024811554516431878, 15.556506191784194) j2m >>></code>
Um die LCV-Spalte in die einzelnen Spalten LCV-a und LCV-b aufzuteilen, können Sie den folgenden Code verwenden:
<code class="python">df[['LCV-a', 'LCV-b']] = pd.DataFrame(df['LCV'].tolist(), index=df.index)</code>
Der resultierende Datenrahmen wird sein:
<code class="python">>>> df y norm test y norm train len(y_train) len(y_test) \ 0 64.904368 116.151232 1645 549 1 70.852681 112.639876 1645 549 SVR RBF \ 0 (35.652207342877873, 22.95533537448393) 1 (39.563683797747622, 27.382483096332511) LCV-a LCV-b \ 0 19.365430594452338 13.880062435173587 1 19.099614489458364 14.018867136617146 RIDGE CV \ 0 (4.2907610988480362, 12.416745648065584) 1 (4.18864306788194, 12.980833914392477) RF \ 0 (9.9484841581029428, 16.46902345373697) 1 (10.139848213735391, 16.282141345406522) GB \ 0 (0.012816232716538605, 15.950164822266007) 1 (0.012814519804493328, 15.305745202851712) ET DATA 0 (0.00034337162272515505, 16.284800366214057) j2m 1 (0.00024811554516431878, 15.556506191784194) j2m</code>
Das obige ist der detaillierte Inhalt vonWie teile ich eine Tupelspalte in separate Spalten in einem Pandas-Datenrahmen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!