python - 如何合并具有相应年份的多个数据集并删除没有数据的年份
问题描述
我再次被困在我的一项 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
解决方案
尝试使用合并,默认情况下,合并将在两个数据框中具有相同名称的列上“连接”并执行内部连接:
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
推荐阅读
- java - 无法使用 IntelliJ 从 github 拉取项目
- jquery - 引导表单上的 JQuery UI 可排序
- azure - 是否可以在 Azure 应用服务中为来自同一 IP 地址的多个请求创建警报?
- python-3.x - 了解张量流的估计器类
- .net-core - Dot Net Core 2.1 未在 IIS Express 上运行
- php - 数字数组的简单方差和标准差
- python - 用 Python 中的字典理解将 3 个列表独特地组合成 1 个列表
- php - 微信H5支付不行
- python-3.x - 根据列信息计算数据框的统计信息
- java - 使用 Volley 下载会出现错误:意外的响应代码 200