python - how to split column of tuples in pandas dataframe? -
i have pandas dataframe (this little piece)
>>> 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 >>>
i want split columns contain tuples. example want replace column lcv
columns lcv-a
, lcv-b
.
how can that?
edit:
the proposed solution not work why??
>>> d1['lcv'].apply(pd.series) 0 0 (19.365430594452338, 13.880062435173587) 1 (19.099614489458364, 14.018867136617146) >>>
edit: seems working
>>> d1['lcv'].apply(eval).apply(pd.series) 0 1 0 19.365431 13.880062 1 19.099614 14.018867 >>>
you can apply(pd.series)
on column:
in [13]: df = pd.dataframe({'a':[1,2], 'b':[(1,2), (3,4)]}) in [14]: df out[14]: b 0 1 (1, 2) 1 2 (3, 4) in [16]: df['b'].apply(pd.series) out[16]: 0 1 0 1 2 1 3 4 in [17]: df[['b1', 'b2']] = df['b'].apply(pd.series) in [18]: df out[18]: b b1 b2 0 1 (1, 2) 1 2 1 2 (3, 4) 3 4
this works because makes of each tuple series, seen row of dataframe.