Разделить столбец на несколько столбцов на основе переменной
Я новичок в питоне и науке о данных, и у меня есть датафрейм, который
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])