我是python和数据科学的新手,并且我有一个数据框
WellID x y rho1 rho2 rho3 ... rho5 dep1 dep2 dep3 dep4 dep5
0 1 5 3 44 67 34 ... 65 0 1 2 3 4
1 2 1 6 87 67 67 ... 34 0 1 2 3 4
2 3 6 3 65 34 34 ... 65 0 1 2 3 4
3 4 5 6 98 45 67 ... 32 0 1 2 3 4
4 5 3 3 34 65 34 ... 65 0 1 2 3 4
5 6 4 5 67 98 98 ... 34 0 1 2 3 4
融化df后,我的产品是
df.melt(['WellID','x','y'])
WellID x y variable value
0 1 5 3 rho1 44
48 1 5 3 dep4 3
42 1 5 3 dep3 2
36 1 5 3 dep2 1
6 1 5 3 rho2 67
30 1 5 3 dep1 0
24 1 5 3 rho5 65
54 1 5 3 dep5 4
12 1 5 3 rho3 34
18 1 5 3 rho4 67
43 2 1 6 dep3 2
37 2 1 6 dep2 1
31 2 1 6 dep1 0
49 2 1 6 dep4 3
19 2 1 6 rho4 34
.
.
.
.
等等。
但是,我需要的是df,其中有一个'dep'和'rho'列,它们与特定的'WellID'和dep和rho的数值相关,即
这是我正在寻找的输出
WellID x y Dep Rho
1 1 5 dep1 rho1
1 1 5 dep2 rho2
1 1 5 dep3 rho3
1 1 5 dep4 rho4
2 5 3 dep1 rho1
2 5 3 dep2 rho2
2 5 3 dep3 rho3
依此类推,其中depth和rho列中的值是对应的值。
我玩过pd.pivot,.stack()和.unstack()以及其他一些东西,但是pd.melt()是我所得到的最接近的东西。
可能值得注意的是,“ dep”值在数据中是连续的,但是“ rho”值对于每个点都是唯一的。
谢谢
答案 0 :(得分:0)
您可以尝试使用wide_to_long
Newdf=pd.wide_to_long(df,['rho','dep'],i=['WellID','x','y'],j='drop').reset_index(level=[0,1,2])