当前位置:  开发笔记 > 编程语言 > 正文

Pandas:是否有一种惯用的方法为一组列中的每个值创建行?

如何解决《Pandas:是否有一种惯用的方法为一组列中的每个值创建行?》经验,为你挑选了1个好方法。

在pandas中是否有惯用的方法为pandas中的一组列中的每个值创建行,如下所示?

import pandas as pd

mydf = pd.DataFrame({
        'A': ['A1','A2','A3'], 
        'B': ['B1','B2','B3'], 
        'C': ['C1','C2','C3'], 
        'M1': [1,2,3],
        'M2': [4,5,6]})

def reshape(dataframe, index_columns, index_colname):
    attributes = [c for c in dataframe.columns if c not in index_columns]
    dfs_out = []
    for c in index_columns:
        proj = [a for l in [[c], attributes] for a in l]
        tdf = dataframe[proj]
        proj[0] = index_colname
        tdf.columns = proj
        dfs_out.append(tdf)

    return pd.concat(dfs_out, ignore_index=True)

print(reshape(mydf, ['A', 'B', 'C'], 'I'))

输出以下内容:

    I  M1  M2
0  A1   1   4
1  A2   2   5
2  A3   3   6
3  B1   1   4
4  B2   2   5
5  B3   3   6
6  C1   1   4
7  C2   2   5
8  C3   3   6

Nickil Mavel.. 5

您还可以使用pd.lreshape()将宽格式数据重新整形为长数据,其中groups关键字参数接受字典,例如groups ={new_name:columns_to_combine}

pd.lreshape(mydf, dict(I=list("ABC")))

在此输入图像描述



1> Nickil Mavel..:

您还可以使用pd.lreshape()将宽格式数据重新整形为长数据,其中groups关键字参数接受字典,例如groups ={new_name:columns_to_combine}

pd.lreshape(mydf, dict(I=list("ABC")))

在此输入图像描述

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有