Превратить M x (n * N) в (n * M) x N данных - PullRequest
0 голосов
/ 09 мая 2019

У меня есть фрейм данных df1 с M строками и n*N столбцами.Столбцы названы

1.1,...,1.N,2.1,...,2.N,...n.1,...n.N

Строки проиндексированы 1,...M.

Какой элегантный способ превратить это в новый фрейм данных df2 с помощью n* M строк проиндексированных 1.1,...,1.M,...,n.1,...n.M и N столбцов с именем 1,...,N, таких, что

df2.iloc[i*M+j,:]==df1.iloc[j,i*n:(i+1)*N]

1 Ответ

2 голосов
/ 09 мая 2019

Используйте Series.str.split с DataFrame.stack и последнее выравнивание MultiIndex на f-string s:

df.columns = df.columns.str.split('.', expand=True)
df = df.stack(0)
df.index = [f'{a}.{b}' for a, b in df.index]
...