Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk memisahkan lajur tupel kepada lajur berasingan dalam bingkai data Pandas?
Cara Mengekstrak Tuples daripada Lajur Bingkai Data Pandas
Masalah:
Dalam bingkai data Pandas , adalah perkara biasa untuk mempunyai lajur yang mengandungi tupel. Walau bagaimanapun, bekerja dengan tupel ini boleh menyusahkan. Untuk memudahkan analisis, selalunya wajar untuk membahagikan lajur ini kepada berbilang lajur yang mengandungi elemen tupel individu.
Penyelesaian:
Untuk menukar lajur tupel kepada lajur berasingan , ikut langkah berikut:
Tukar lajur kepada senarai tupel menggunakan kaedah tolist():
<code class="python">column_list = column.tolist()</code>
Buat yang baharu bingkai data daripada senarai tupel:
<code class="python">new_df = pd.DataFrame(column_list, index=dataframe.index)</code>
Tetapkan bingkai data baharu sebagai lajur baharu kepada bingkai data asal:
<code class="python">dataframe[['column_a', 'column_b']] = new_df[['0', '1']]</code>
Contoh:
Pertimbangkan rangka data berikut:
<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>
Untuk memisahkan lajur LCV kepada lajur individu LCV-a dan LCV-b, anda boleh menggunakan kod berikut:
<code class="python">df[['LCV-a', 'LCV-b']] = pd.DataFrame(df['LCV'].tolist(), index=df.index)</code>
Kerangka data yang terhasil ialah:
<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>
Atas ialah kandungan terperinci Bagaimana untuk memisahkan lajur tupel kepada lajur berasingan dalam bingkai data Pandas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!