【发布时间】:2019-01-20 18:00:05
【问题描述】:
我想将一个对称相似矩阵 (pd.DataFrame) 转换为带有pd.MultiIndex 的未堆叠pd.Series,然后再转换回pd.DataFrame
这是获取对称pd.DataFrame 的代码以及我尝试反转操作的代码。
我应该使用pivot 吗?我想以另一个名为df_sqr_revert 的pd.DataFrame 结尾,它与原始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'
【问题讨论】:
标签: python pandas dataframe stack pivot-table