我想总结一下2017年6小时内基于同等价格的一些市场容量
我有一个数据框架,df1(market_volumes),它包含一些地区的市场容量。然后我有另一个数据帧,df2(mFRR_price),它包含一些市场价格
df1
Date NO1 Up NO1 Down NO2 Up ... DK1 Up DK1 Down DK2 Up DK2 Down
35062 31-12-2020 54.0 0.0 214.0 ... 33.0 0.0 31.0 0.0
35063 31-12-2020 3.0 0.0 121.0 ... 125.0 0.0 21.0 0.0
35064 31-12-2020 0.0 -28.0 0.0 ... 0.0 -9.0 0.0 0.0
35065 31-12-2020 0.0 -83.0 0.0 ... 0.0 0.0 0.0 0.0
35066 31-12-2020 0.0 -80.0 0.0 ... 0.0 -55.0 0.0 0.0
35067 31-12-2020 0.0 -42.0 0.0 ... 79.0 0.0 23.0 0.0
df2
Date NO1 Up NO2 Up NO3 Up ... SE4 Up FI Up DK1 Up DK2 Up
35062 31-12-2020 47.4 47.4 27.2 ... 61.1 61.1 94.1 94.1
35063 31-12-2020 31.0 31.0 25.7 ... 58.0 35.3 89.4 89.4
35064 31-12-2020 24.8 24.8 24.8 ... 54.5 24.8 56.7 56.7
35065 31-12-2020 24.8 24.8 24.8 ... 51.2 28.0 52.4 52.4
35066 31-12-2020 24.6 24.6 24.6 ... 45.8 26.6 51.9 51.9
35067 31-12-2020 24.1 24.1 23.3 ... 24.1 24.1 78.7 78.7
现在,如果df2中一行中的值等于“NO1 up”列中的值,我想总结df1中的市场容量
也就是说,我正在寻找一种方法,以一个新的数据帧结束,这将导致:
df3
Date NO1 Up NO1 Down NO2 Up ... DK1 Up DK1 Down DK2 Up DK2 Down SUM
35062 31-12-2020 54.0 0.0 214.0 ... 33.0 0.0 31.0 0.0 (54+214)
35063 31-12-2020 3.0 0.0 121.0 ... 125.0 0.0 21.0 0.0 (3+121)
35064 31-12-2020 0.0 -28.0 0.0 ... 0.0 -9.0 0.0 0.0 etc.
35065 31-12-2020 0.0 -83.0 0.0 ... 0.0 0.0 0.0 0.0
35066 31-12-2020 0.0 -80.0 0.0 ... 0.0 -55.0 0.0 0.0
35067 31-12-2020 0.0 -42.0 0.0 ... 79.0 0.0 23.0 0.0
。。。因为它定位的区域价格相等,并且在数据帧中对这些位置的市场容量求和
我一直在做这个:
market_volumes['sum'] = mFRR_price.eq(mFRR_price['NO1 Up'], axis=0).mul(mFRR_price['NO1 Up'], axis=0).sum(axis=1)
但它将df2中的值相加,并将其放入df1中。我需要df2中的位置,但需要df1中的值
可以使用.loc并应用布尔索引
第一行沿着df2的索引向下,检查列NO1 Up和NO2 Up中的值是否相等。然后,它创建一个名为“SUM”的列—此新列的值取决于前面布尔值的结果。。如果前面的布尔值为true,则转到SUM列并执行以下操作:
相反,如果结果为假,pandas将在SUM列中插入'NaN'
不确定您是否同意NaN值。大多数不是,所以第二行代码或多或少是第一行代码的倒数。。。如果df2['NO1 Up']!=df2['NO2 Up'],然后在df1 SUM列中插入整数0
同样,可能还有其他方法来实现你想要的
相关问题 更多 >
编程相关推荐