将M x(n * N)转换为(n * M)x N数据帧

时间:2019-05-09 08:27:40

标签: python pandas dataframe reshape

我有一个数据框df1,其中有M行和n*N列。列名为

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

行被索引为1,...M

将n * M行索引为df21.1,...,1.M,...,n.1,...n.M列名为N的n * M行,将其转换为新数据框1,...,N的一种优雅方法是

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

1 个答案:

答案 0 :(得分:2)

Series.str.splitDataFrame.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]