【问题标题】:Unstacking values into different rows in Pandas DataFrame在 Pandas DataFrame 中将值拆分为不同的行
【发布时间】:2020-07-30 04:40:15
【问题描述】:

我有一个 DataFrame(如下)。我有兴趣拆开 fromto 列。

对于fromto 之间的每个不同年份,我需要将fromto 列拆分为多行。例如,第一行会产生类似这样的东西

我尝试了从pd.melt()pd.pivot_table() 的所有方法。

【问题讨论】:

    标签: python pandas pivot-table


    【解决方案1】:

    创建一列类似数组的对象,其中包含 'from' 和 'to' 之间的所有年份,然后在该列上 explode。这不是最有效的解决方案,但很简单。

    样本数据

       a  b  c  d  e  from    to
    0  2  9  1  7  3  1940  1945
    1  5  6  2  6  1  1950  1951
    

    代码

    df['year'] = [np.arange(f,t+1) for f,t in zip(df['from'], df['to'])]
    df = df.explode('year')
    

       a  b  c  d  e  from    to  year
    0  2  9  1  7  3  1940  1945  1940
    0  2  9  1  7  3  1940  1945  1941
    0  2  9  1  7  3  1940  1945  1942
    0  2  9  1  7  3  1940  1945  1943
    0  2  9  1  7  3  1940  1945  1944
    0  2  9  1  7  3  1940  1945  1945
    1  5  6  2  6  1  1950  1951  1950
    1  5  6  2  6  1  1950  1951  1951
    

    【讨论】:

    • 谢谢。从未听说过这种pd.explode() 方法。它奏效了。
    猜你喜欢
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多