[英]How to unpack a dataframe column with tuples of different length?
我有一个 Pandas dataframe 看起来像这样:
df = pd.DataFrame({'c1': [10, 20, 30, 40, 50,60,70],
'c2': [[(0.14507, 0.163054, 0.330704), (0.069578, 0.075506, 0.145531), (0.039168, 0.042362, 0.097616), (0.038133, 0.04009, 0.079482), (0.039872, 0.041051, 0.06478), (0.039158, 0.039898, 0.054787), (0.03744, 0.037917, 0.047526), (0.035354, 0.035669, 0.041999), (0.033199, 0.03341, 0.037646), (0.031113, 0.031256, 0.034127), (0.02916, 0.029257, 0.031222), (0.027361, 0.027428, 0.028784), (0.02572, 0.025767, 0.026709)],
np.nan,
[(0.000341, 0.000391, 0.000991), (0.006122, 0.006682, 0.013834), (0.008017, 0.008671, 0.01998), (0.011591, 0.012186, 0.02416), (0.016047, 0.016522, 0.026072), (0.019587, 0.019957, 0.027405), (0.022358, 0.022643, 0.028382), (0.024514, 0.024733, 0.029122), (0.02619, 0.026356, 0.029698), (0.027492, 0.027618, 0.030155), (0.028507, 0.028602, 0.030523), (0.0293, 0.029373, 0.030825), (0.029924, 0.029979, 0.031075)],
[(0.000341, 0.000391, 0.000991), (0.006122, 0.006682, 0.013834), (0.008017, 0.008671, 0.01998), (0.011591, 0.012186, 0.02416), (0.016047, 0.016522, 0.026072), (0.019587, 0.019957, 0.027405), (0.022358, 0.022643, 0.028382), (0.024514, 0.024733, 0.029122), (0.02619, 0.026356, 0.029698), (0.027492, 0.027618, 0.030155), (0.028507, 0.028602, 0.030523), (0.0293, 0.029373, 0.030825), (0.029924, 0.029979, 0.031075)],
[(0.041119, 0.046924, 0.111008), (0.027748, 0.030228, 0.061034), (0.019769, 0.02138, 0.049267), (0.021487, 0.02259, 0.044787), (0.024792, 0.025526, 0.04028), (0.026614, 0.027117, 0.037236), (0.027595, 0.027947, 0.03503), (0.028072, 0.028322, 0.033348), (0.028237, 0.028416, 0.03202), (0.028208, 0.028337, 0.03094), (0.02806, 0.028153, 0.030044), (0.02784, 0.027908, 0.029288), (0.02758, 0.02763, 0.02864)],
[(5.25, 6.16, 7.7)],
[(0.003174, 0.003642, 0.009186), (0.007794, 0.008506, 0.017575), (0.009007, 0.009741, 0.022447), (0.012455, 0.013094, 0.025961), (0.016847, 0.017345, 0.027372), (0.020272, 0.020655, 0.028363), (0.022917, 0.023209, 0.029091), (0.024952, 0.025175, 0.029642), (0.026517, 0.026685, 0.03007), (0.027721, 0.027848, 0.030406), (0.028649, 0.028745, 0.030676), (0.029367, 0.02944, 0.030895), (0.029924, 0.029979, 0.031075)]]})´´´
我想拆分不同列中的所有元组,然后用数字解压列中的元组。 像这样的东西:
我怎样才能做到这一点?
谢谢!
如果我理解正确,您希望将元组中的内部值扩展为单独的列:
x = df["c2"].explode().explode().groupby(level=0).agg(list).apply(pd.Series)
x.columns = [f"c{c+3}" for c in x.columns]
print(pd.concat([df["c1"], x], axis=1))
印刷:
c1 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41
0 10 0.145070 0.163054 0.330704 0.069578 0.075506 0.145531 0.039168 0.042362 0.097616 0.038133 0.040090 0.079482 0.039872 0.041051 0.064780 0.039158 0.039898 0.054787 0.037440 0.037917 0.047526 0.035354 0.035669 0.041999 0.033199 0.033410 0.037646 0.031113 0.031256 0.034127 0.029160 0.029257 0.031222 0.027361 0.027428 0.028784 0.025720 0.025767 0.026709
1 20 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 30 0.000341 0.000391 0.000991 0.006122 0.006682 0.013834 0.008017 0.008671 0.019980 0.011591 0.012186 0.024160 0.016047 0.016522 0.026072 0.019587 0.019957 0.027405 0.022358 0.022643 0.028382 0.024514 0.024733 0.029122 0.026190 0.026356 0.029698 0.027492 0.027618 0.030155 0.028507 0.028602 0.030523 0.029300 0.029373 0.030825 0.029924 0.029979 0.031075
3 40 0.000341 0.000391 0.000991 0.006122 0.006682 0.013834 0.008017 0.008671 0.019980 0.011591 0.012186 0.024160 0.016047 0.016522 0.026072 0.019587 0.019957 0.027405 0.022358 0.022643 0.028382 0.024514 0.024733 0.029122 0.026190 0.026356 0.029698 0.027492 0.027618 0.030155 0.028507 0.028602 0.030523 0.029300 0.029373 0.030825 0.029924 0.029979 0.031075
4 50 0.041119 0.046924 0.111008 0.027748 0.030228 0.061034 0.019769 0.021380 0.049267 0.021487 0.022590 0.044787 0.024792 0.025526 0.040280 0.026614 0.027117 0.037236 0.027595 0.027947 0.035030 0.028072 0.028322 0.033348 0.028237 0.028416 0.032020 0.028208 0.028337 0.030940 0.028060 0.028153 0.030044 0.027840 0.027908 0.029288 0.027580 0.027630 0.028640
5 60 5.250000 6.160000 7.700000 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
6 70 0.003174 0.003642 0.009186 0.007794 0.008506 0.017575 0.009007 0.009741 0.022447 0.012455 0.013094 0.025961 0.016847 0.017345 0.027372 0.020272 0.020655 0.028363 0.022917 0.023209 0.029091 0.024952 0.025175 0.029642 0.026517 0.026685 0.030070 0.027721 0.027848 0.030406 0.028649 0.028745 0.030676 0.029367 0.029440 0.030895 0.029924 0.029979 0.031075
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.