Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何按两列分组并创建到子地块的循环?_Python_Pandas_Loops_Plot - Fatal编程技术网

Python 如何按两列分组并创建到子地块的循环?

Python 如何按两列分组并创建到子地块的循环?,python,pandas,loops,plot,Python,Pandas,Loops,Plot,我在这个结构中有一个大数据帧(df): year person purchase 2016 Peter 0 2016 Peter 223820 2016 Peter 0 2017 Peter 261740 2017 Peter 339987 2018 Peter

我在这个结构中有一个大数据帧(df):

    year        person      purchase

    2016        Peter       0
    2016        Peter       223820
    2016        Peter       0
    2017        Peter       261740
    2017        Peter       339987
    2018        Peter       200000
    2016        Carol       256400
    2017        Carol       33083820
    2017        Carol       154711
    2018        Carol       3401000
    2016        Frank       824043
    2017        Frank       300000
    2018        Frank       214416259
    2018        Frank       4268825
    2018        Frank       463080
    2016        Rita        0
看看每个人每年花多少钱,我一年一组,一个人一组,这给了我想要的

代码:

我如何创建一个循环来为每个人创建包含他/她每年在购买上花费的子地块

所以每个人都有一个子批次,其中x=年份,y=购买。

我试过很多不同的方法,但似乎都不管用


谢谢

您可以执行
pivot\u table
groupby().sum().unstack('person')
,然后
绘图

(df.pivot_table(index='year', 
                columns='person', 
                values='purchase', 
                aggfunc='sum')
    .plot(subplots=True)
);

输出:

(df.pivot_table(index='year', 
                columns='person', 
                values='purchase', 
                aggfunc='sum')
    .plot(subplots=True)
);
(df.groupby(['person','year'])['purchase']
   .sum()
   .unstack('person')
   .plot(subplots=True)
);