Pandas データフレームの列からタプルを抽出する方法
問題:
Pandas データフレーム内、タプルを含む列があるのが一般的です。ただし、これらのタプルの操作は面倒な場合があります。分析を容易にするために、これらの列を個々のタプル要素を含む複数の列に分割することが望ましいことがよくあります。
解決策:
タプルの列を個別の列に変換するには、次の手順に従います:
tolist() メソッドを使用して列をタプルのリストに変換します:
<code class="python">column_list = column.tolist()</code>
新規作成タプルのリストからのデータフレーム:
<code class="python">new_df = pd.DataFrame(column_list, index=dataframe.index)</code>
新しいデータフレームを新しい列として元のデータフレームに割り当てます:
<code class="python">dataframe[['column_a', 'column_b']] = new_df[['0', '1']]</code>
例:
次のデータフレームについて考えます:
<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>
LCV 列を個別の列 LCV-a と LCV-b に分割するには、次のコードを使用できます。
<code class="python">df[['LCV-a', 'LCV-b']] = pd.DataFrame(df['LCV'].tolist(), index=df.index)</code>
結果のデータフレームは次のようになります:
<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>
以上がPandas データフレームでタプルの列を個別の列に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。