【问题标题】:Turn M x (n*N) into (n*M) x N dataframe将 M x (n*N) 变成 (n*M) x N 数据帧
【发布时间】:2019-05-09 08:27:40
【问题描述】:

我有一个数据框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.MN 列名为 1,...,N,这样

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

【问题讨论】:

    标签: python pandas dataframe reshape


    【解决方案1】:

    Series.str.splitDataFrame.stack 一起使用,最后将MultiIndex 扁平化为f-strings:

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

    【讨论】:

    • df.columns.str.split('.', expand=True) - 太棒了。幸运的是,我的列名格式实际上具有这种格式。 (好吧,我想否则我可以先这样命名它们,然后使用您的解决方案,然后重命名所有内容)
    猜你喜欢
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多