Heim  >  Artikel  >  Backend-Entwicklung  >  Wie teile ich eine Tupelspalte in separate Spalten in einem Pandas-Datenrahmen auf?

Wie teile ich eine Tupelspalte in separate Spalten in einem Pandas-Datenrahmen auf?

DDD
DDDOriginal
2024-10-25 02:42:02673Durchsuche

How to split a column of tuples into separate columns in a Pandas dataframe?

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:

  1. Konvertieren Sie die Spalte mit der tolist()-Methode in eine Liste von Tupeln:

    <code class="python">column_list = column.tolist()</code>
  2. Erstellen Sie eine neue Datenrahmen aus der Liste der Tupel:

    <code class="python">new_df = pd.DataFrame(column_list, index=dataframe.index)</code>
  3. 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!

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