Панды Транспонировать с помощью Pivot - PullRequest
0 голосов
/ 01 ноября 2018

Я знаю, что существует множество решений, но я не уверен, что не смогу применить к нему мой случай. Небольшая помощь поможет мне понять, как использовать его в следующий раз:

мои входные данные:

OID  V   ED  D   F   SF   SPID   SP   M    A    V
1    V1  E1  D1  F1  SF1  1      SP1  1.6  2.5  3.5
1    V1  E1  D1  F1  SF1  2      SP2  2.6  3.5  4.5

мои выходные данные должны выглядеть следующим образом:

OID  V   ED  D   F   SF   SPID   SP   T   H
1    V1  E1  D1  F1  SF1  1      SP1  M   1.6
1    V1  E1  D1  F1  SF1  1      SP1  A   2.5
1    V1  E1  D1  F1  SF1  1      SP1  V   3.5
1    V1  E1  D1  F1  SF1  2      SP2  M   1.6
1    V1  E1  D1  F1  SF1  2      SP2  A   2.5
1    V1  E1  D1  F1  SF1  2      SP2  V   3.5

и мой код:

out=df.pivot_table(values=['M','A','V'], columns=values=['M','A','V'],
index=['OID','V','ED','D','F','SF','SPID','SP']).reset_index()
print(out)

ТИА!

1 Ответ

0 голосов
/ 01 ноября 2018

Используйте melt вместо pivot.

(df.melt(df.columns[:-3], var_name='T', value_name='H')
   .sort_values('SPID'))

   OID   V  ED   D   F   SF  SPID   SP    T    H
0    1  V1  E1  D1  F1  SF1     1  SP1    M  1.6
2    1  V1  E1  D1  F1  SF1     1  SP1    A  2.5
4    1  V1  E1  D1  F1  SF1     1  SP1  V.1  3.5
1    1  V1  E1  D1  F1  SF1     2  SP2    M  2.6
3    1  V1  E1  D1  F1  SF1     2  SP2    A  3.5
5    1  V1  E1  D1  F1  SF1     2  SP2  V.1  4.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...