簡體   English   中英

如何打開具有不同長度元組的 dataframe 列?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM