Как я могу преобразовать столбцы в строки в Pandas? - PullRequest
1 голос
/ 27 мая 2019

У меня есть что-то вроде этого:

Values     Time
  22        0
  45        1
  65        2
  78        0
  12        1
  45        2

и я хочу это:

Time    0    1    2 
Val1    22   45   65
Val2    78   12   45

Как я могу это сделать?

Ответы [ 3 ]

4 голосов
/ 27 мая 2019

Это pivot создание индекса с cumcount

df['idx'] = 'Val' + (df.groupby('Time').cumcount()+1).astype(str)
df.pivot(index='idx', columns='Time', values='Values').rename_axis(None)

Вывод:

Time   0   1   2
Val1  22  45  65
Val2  78  12  45
1 голос
/ 27 мая 2019

Если ваша дельта времени постоянна, упорядочена и не имеет пропущенных значений:

DELTA = 3
new_values = [df['Values'].iloc[i*DELTA:i*DELTA+DELTA].values.transpose() for i in range(int(len(df)/DELTA))]
df_new = pd.DataFrame(new_values , index=['Val'+str(i+1) for i in range(len(new_values ))])

print(df_new)
         0   1   2
Val1    22  45  65
Val2    78  12  45

Не очень хорошее решение, но, возможно, оно поможет. : -)

1 голос
/ 27 мая 2019

Вам нужно транспонировать ваш массив / матрицу.

Использовать

list(map(list, zip(*l)))

, где list - ваш список

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...