代码之家  ›  专栏  ›  技术社区  ›  Newskooler

如何堆叠pd。数据帧,直到它变成pd。系列

  •  0
  • Newskooler  · 技术社区  · 3 年前

    我有以下的pd。数据帧:

    df = pd.DataFrame(
        data=[['dog', 'kg', 100, 241], ['cat', 'lbs', 300, 1]],
        columns=['animal', 'unit', 0, 1],
    ).set_index(['animal', 'unit'])
    df.columns = pd.MultiIndex.from_tuples(list(zip(*[['2019', '2018'], ['Apr', 'Oct']])))
    

    我想把它转换成二维矩阵,在索引或列上没有多级索引:

    pd.DataFrame(
        data=[
            ['dog', 'kg', 100, '2019', 'Apr'],
            ['dog', 'kg', 241, '2018', 'Oct'],
            ['cat', 'lbs', 300, '2019', 'Apr'],
            ['cat', 'lbs', 1, '2018', 'Oct']
        ],
        columns=['animal', 'unit', 'value', 'year', 'month']
    )
    

    为了实现这一点,我使用 df.stack().stack() ->这就成了一个问题 pd.Series 然后我就这么做了 .reset_index() 在这些系列上,t转换为数据帧。

    我的问题是——如何避免第二个(或多个) stack() ?

    有没有办法叠加一个pd。数据帧,直到它成为 警察局。系列 ?

    0 回复  |  直到 3 年前