Python 根据某些条件插入行,填写数据
我有以下数据帧:Python 根据某些条件插入行,填写数据,python,pandas,Python,Pandas,我有以下数据帧: data={"Date":["8/4/2020","8/4/2020","8/4/2020","8/4/2020","8/4/2020"], "Weight":[35,35,30,50,50], "Subportfolio":["Portfolio1","Portfo
data={"Date":["8/4/2020","8/4/2020","8/4/2020","8/4/2020","8/4/2020"],
"Weight":[35,35,30,50,50],
"Subportfolio":["Portfolio1","Portfolio2","Portfolio3","Portfolio4","Portfolio5"],
"Portfolio Code":[1,1,1,2,2],
"Instrument":["","","","",""],
"Amount":["","","","",""]}
df=pd.DataFrame(data)
看起来是这样的:
Date Weight Subportfolio Portfolio Code Instrument Amount
0 8/4/2020 35 Portfolio 1 1
1 8/4/2020 35 Portfolio 2 1
2 8/4/2020 30 Portfolio 3 1
3 8/4/2020 50 Portfolio 4 2
4 8/4/2020 50 Portfolio 5 2
我想在新的公文包代码开始之前插入一行。同时,新创建的行应该包含一些数据——总是相同的。
我想切实做到这一点:
Date Weight Subportfolio Portfolio Code Instrument Amount
0 8/4/2020 35 Portfolio 1 1
1 8/4/2020 35 Portfolio 2 1
2 8/4/2020 30 Portfolio 3 1
3 8/4/2020 1 Exposure 1000000
4 8/4/2020 50 Portfolio 4 2
5 8/4/2020 50 Portfolio 5 2
6 8/4/2020 2 Exposure 1000000
我实际上没有尝试过任何东西,因为我不知道如何解决这个问题。我在考虑使用groupby(by:Portfolio code),但不确定如何进行。一种通用方法是
concat
然后排序:
(pd.concat([df,df[['Date','Portfolio Code']].drop_duplicates()
.assign(Instrument='Exposure',Amount=1000000)
])
.sort_values('Portfolio Code', kind='mergesort')
)
输出:
Date Weight Subportfolio Portfolio Code Instrument Amount
0 8/4/2020 35.0 Portfolio1 1
1 8/4/2020 35.0 Portfolio2 1
2 8/4/2020 30.0 Portfolio3 1
0 8/4/2020 NaN NaN 1 Exposure 1000000
3 8/4/2020 50.0 Portfolio4 2
4 8/4/2020 50.0 Portfolio5 2
3 8/4/2020 NaN NaN 2 Exposure 1000000
日期是否为Profolio code
所独有?日期始终相同