[英]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.