gpt4 book ai didi

python - reshape pandas 中的距离矩阵

转载 作者:行者123 更新时间:2023-11-30 21:50:42 24 4
gpt4 key购买 nike

我有一个 df1 形状的数据框

import pandas as pd

df1 = pd.DataFrame({
'From': ['A','B','C'],
'To': ['X','Y','Z'],
'Price': [1,2,3]
})

我想做的是将 df1 reshape 为 df2 的形式。期望的最终结果是这样的:

df2 = pd.DataFrame({
'Location': ['A','X','B','Y','C','Z'],
'Direction': ['Origin','Destination','Origin','Destination','Origin','Destination'],
'Price': [1,1,2,2,3,3]
})

我想用 pandas stack()、pivot()、melt() 等来实现这一点,但我不知道它是如何完成的。

最佳答案

首先重命名列,然后按DataFrame.set_index reshape 形状和 DataFrame.stack :

df = (df1.rename(columns={'From':'Origin','To':'Destination'})
.set_index('Price')
.rename_axis('Direction', axis=1)
.stack()
.reset_index(name='Location')
.reindex(['Location','Direction','Price'], axis=1))
print (df)
Location Direction Price
0 A Origin 1
1 X Destination 1
2 B Origin 2
3 Y Destination 2
4 C Origin 3
5 Z Destination 3

如果顺序不重要:

df2 = (df1.rename(columns={'From':'Origin','To':'Destination'})
.melt('Price',var_name='Direction',value_name='Location')
.reindex(['Location','Direction','Price'], axis=1)
)
print (df2)
Location Direction Price
0 A Origin 1
1 B Origin 2
2 C Origin 3
3 X Destination 1
4 Y Destination 2
5 Z Destination 3

关于python - reshape pandas 中的距离矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60295838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com