我有一个dataframe,看起来像这样:
CCY Pair Time Amt
0 EURUSD 13/05/2023 1000
1 EURUSD 13/05/2023 2000
2 EURUSD 14/05/2023 3000
3 EURUSD 14/05/2023 5000
4 GBPEUR 15/05/2023 4000
我想对时间列求和,这样数据框看起来就像这样:
CCY Pair Time Amt AmtSum
0 EURUSD 13/05/2023 1000 3000
1 EURUSD 14/05/2023 3000 8000
2 GBPEUR 15/05/2023 4000 4000
我的代码似乎不能正确地计算金额:
df2= pd.to_datetime(df['Time'])
StartDate = df['Time']
EndDate= StartDate.iloc[::-1]
dfx=df
dfx['StartDate'] = StartDate
dfx['EndDate'] = EndDate
dfx['AmtSum'] = dfx.apply(lambda x: df.loc[(df.Time >= x.StartDate) &
(df.Time <= x.EndDate), 'Amt'].sum(), axis=1)
2条答案
按热度按时间dxxyhpgq1#
您可以尝试
.groupby()
+.agg()
:图纸:
或者,如果您想按
Time
/CCY Pair
分组:r7s23pms2#
看起来你想把你的数据框按'CCY Pair'和'Time'列分组,然后对'Amt'列求和。您可以使用pandas中的
groupby()
函数来实现这一点。以下是如何修改代码:这段代码会给予你想要的输出: