首页 > 解决方案 > 如何合并具有相应年份的多个数据集并删除没有数据的年份

问题描述

我再次被困在我的一项 Python 作业上,这一项要求我将四个不同的数据帧合并在一起。虽然前三个并不难,只需要我将它们连接起来,但让我难过的是第四个。

虽然前三个涉及 2017-2019 年三种不同股票的股票数据,但第四个数据框将这三个数据组合在一个更长的列中,其中包括 2014-2019 年的年份。我发现自己无法以一种有意义的方式将这四个结合在一起。我将发布我想要完成的工作,以及有问题的数据框。有人知道如何解决这个问题吗?

我遇到问题的框架是“data4”框架。我将附上我正在尝试做的代码。

import pandas as pd

data1 = {'tic':['PYPL','PYPL','PYPL'],
        'fyear':['2017','2018','2019'],
        'asset':[40774,43332,51333],
        'debt':[0,0,5368],
        'ni':[1795,2057,2459],
       }
data2 = {'tic':['SQ','SQ','SQ'],
        'fyear':['2017','2018','2019'],
        'asset':[2187.27,3281.023,4551.258],
        'debt':[362.404,1051.141,1047.662],
        'ni':[-62.813,-38.453,375.446],
       }
data3 = {'tic':['GPN','GPN','GPN'],
        'fyear':['2017','2018','2019'],
        'asset':[12998.069,13230.774,44480.162],
        'debt':[4559.408,5015.168,9487.852],
        'ni':[468.425,452.053,430.613],
       }
data4 = {'fyear':['2015','2016','2017','2018','2019','2015','2016','2017','2018','2019','2015','2016'],
         'tic':['PYPL','PYPL','PYPL','PYPL','PYPL','SQ','SQ','SQ','SQ','SQ','GPN','GPN'],
         'price':[36.2,39.47,73.62,84.09,108.17,13.09,13.63,34.67,56.09,62.56,104.38,77.69],
    
}
PYPL = pd.DataFrame(data1)
SG = pd.DataFrame (data2)
gpn = pd.DataFrame (data3)
prc = pd.DataFrame (data4)

frame = pd.concat([PYPL,SG,gpn])

pd.concat([frame,prc])

这没有预期的效果。我正在尝试获得类似的东西。

tic fyear asset debt ni price
0 PYPL 2017 40774.000 0.000 1795.000 73.62
1 PYPL 2018 43332.000 0.000 2057.000 84.09
2 PYPL 2019 51333.000 5368.000 2459.000 108.17
3 SQ 2017 2187.270 362.404 -62.813 34.67
4 SQ 2018 3281.023 1051.140 -38.453 56.09
5 SQ 2019 4551.258 1047.662 375.446 62.56
6 GPN 2017 12998.069 4559.408 468.425 100.24
7 GPN 2018 13230.774 5015.168 452.053 103.13
8 GPN 2019 44480.162 9487.852 430.613 182.56

标签: pythonpandasmerge

解决方案


尝试使用合并,默认情况下,合并将在两个数据框中具有相同名称的列上“连接”并执行内部连接:

frame.merge(prc)

输出:

    tic fyear      asset      debt        ni   price
0  PYPL  2017  40774.000     0.000  1795.000   73.62
1  PYPL  2018  43332.000     0.000  2057.000   84.09
2  PYPL  2019  51333.000  5368.000  2459.000  108.17
3    SQ  2017   2187.270   362.404   -62.813   34.67
4    SQ  2018   3281.023  1051.141   -38.453   56.09
5    SQ  2019   4551.258  1047.662   375.446   62.56

推荐阅读