Разделить столбец на несколько столбцов на основе переменной

Я новичок в питоне и науке о данных, и у меня есть датафрейм, который

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

и так далее, где значения в столбце глубины и rho являются соответствующими значениями.

Я играл с pd.pivot, .stack() и.unstack() и некоторыми другими вещами, но pd.melt() - самый близкий, который я получил.

Вероятно, стоит отметить, что значения "dep" непрерывны в данных, но значения "rho" уникальны для каждой точки.

Спасибо

1 ответ

Решение

Вы можете попробовать с wide_to_long

Newdf=pd.wide_to_long(df,['rho','dep'],i=['WellID','x','y'],j='drop').reset_index(level=[0,1,2])
Другие вопросы по тегам