猿问

如何将“ pandas”中“ DataFrame”的“ unstack”方法反转回原始对象?

我想将对称相似性矩阵(pd.DataFrame)转换为pd.Series带a的未堆叠状态,pd.MultiIndex然后再转换为apd.DataFrame


这是获得对称的代码,pd.DataFrame也是我尝试反转操作的尝试。


我应该使用pivot吗?我想以另一个pd.DataFrame名称结尾df_sqr_revert,该名称与原始名称相同df_sqr。


有谁知道如何撤销此操作?


data = {'sepal_length': {'sepal_length': 1.0, 'sepal_width': 0.44531537502467533, 'petal_length': 0.935877078652436, 'petal_width': 0.9089768166845817}, 'sepal_width': {'sepal_length': 0.44531537502467533, 'sepal_width': 1.0, 'petal_length': 0.2897419517994226, 'petal_width': 0.32172795519309727}, 'petal_length': {'sepal_length': 0.935877078652436, 'sepal_width': 0.2897419517994226, 'petal_length': 1.0, 'petal_width': 0.9813785485254833}, 'petal_width': {'sepal_length': 0.9089768166845817, 'sepal_width': 0.32172795519309727, 'petal_length': 0.9813785485254833, 'petal_width': 1.0}}


df_sqr = pd.DataFrame(data)

#               petal_length  petal_width  sepal_length  sepal_width

# petal_length      1.000000     0.981379      0.935877     0.289742

# petal_width       0.981379     1.000000      0.908977     0.321728

# sepal_length      0.935877     0.908977      1.000000     0.445315

# sepal_width       0.289742     0.321728      0.445315     1.000000

Se_vertical = df_sqr.unstack()

# petal_length  petal_length    1.000000

#               petal_width     0.981379

#               sepal_length    0.935877

#               sepal_width     0.289742

# petal_width   petal_length    0.981379

#               petal_width     1.000000

#               sepal_length    0.908977

#               sepal_width     0.321728

# sepal_length  petal_length    0.935877

#               petal_width     0.908977

#               sepal_length    1.000000

#               sepal_width     0.445315

# sepal_width   petal_length    0.289742

#               petal_width     0.321728

#               sepal_length    0.445315

#               sepal_width     1.000000

# dtype: float64


# df_sqr_revert = Se_vertical.stack()

# AttributeError: 'Series' object has no attribute 'stack'


青春有我
浏览 149回答 1
1回答

LEATH

矛盾的是,您想要的是第二个unstack调用:In [14]: dfOut[14]:               sepal_length  sepal_width  petal_length  petal_widthpetal_length      0.935877     0.289742      1.000000     0.981379petal_width       0.908977     0.321728      0.981379     1.000000sepal_length      1.000000     0.445315      0.935877     0.908977sepal_width       0.445315     1.000000      0.289742     0.321728In [13]: df_sqr.unstack().unstack()Out[13]:               petal_length  petal_width  sepal_length  sepal_widthsepal_length      0.935877     0.908977      1.000000     0.445315sepal_width       0.289742     0.321728      0.445315     1.000000petal_length      1.000000     0.981379      0.935877     0.289742petal_width       0.981379     1.000000      0.908977     0.321728该文件提到,拆散了一系列的情况下等于支点,就像你在你的问题之嫌。奖金只是因为我很好奇,当我们为列和索引标签加上前缀时,堆栈和非堆栈之间的区别变得更加明显:In [17]: df.columns  = [f'columns_{i}' for i in df.columns]In [18]: df.index  = [f'index_{i}' for i in df.index].stack() 将行索引作为多索引的最左侧:In [20]: df.stack()Out[20]: index_petal_length  columns_sepal_length    0.935877                    columns_sepal_width     0.289742                    columns_petal_length    1.000000                    columns_petal_width     0.981379index_petal_width   columns_sepal_length    0.908977                    columns_sepal_width     0.321728                    columns_petal_length    0.981379                    columns_petal_width     1.000000index_sepal_length  columns_sepal_length    1.000000                    columns_sepal_width     0.445315                    columns_petal_length    0.935877                    columns_petal_width     0.908977index_sepal_width   columns_sepal_length    0.445315                    columns_sepal_width     1.000000                    columns_petal_length    0.289742                    columns_petal_width     0.321728dtype: float64.unstack() 将列索引作为多索引的最左侧:In [21]: df.unstack()Out[21]: columns_sepal_length  index_petal_length    0.935877                      index_petal_width     0.908977                      index_sepal_length    1.000000                      index_sepal_width     0.445315columns_sepal_width   index_petal_length    0.289742                      index_petal_width     0.321728                      index_sepal_length    0.445315                      index_sepal_width     1.000000columns_petal_length  index_petal_length    1.000000                      index_petal_width     0.981379                      index_sepal_length    0.935877                      index_sepal_width     0.289742columns_petal_width   index_petal_length    0.981379                      index_petal_width     1.000000                      index_sepal_length    0.908977                      index_sepal_width     0.321728dtype: float64
随时随地看视频慕课网APP

相关分类

Python
我要回答