我最近了解pandas
并很高兴看到它的分析功能。我正在尝试将 Excel 数组函数转换为 Pandas 等效于我为创建性能归因报告而创建的自动化电子表格。在此示例中,我根据其他列中的条件在 Excel 中创建了一个新列:
={SUMIFS($F$10:$F$4518,$A$10:$A$4518,$C$4,$B$10:$B$4518,0,$C$10:$C$4518," ",$D$10:$D$4518,$D10,$E$10:$E$4518,$E10)}
该公式是根据特定条件对“F”数组(安全权重)中的值求和。“A”数组(投资组合ID)为某个数字,“B”数组(证券ID)为零,“C”数组(组描述)为“”,“D”数组(开始日期)为行的日期我所在的行,“E”数组(结束日期)是我所在行的日期。
在 Pandas 中,我使用的是 DataFrame。在具有前三个条件的数据帧上创建一个新列是直截了当的,但我在最后两个条件下遇到了困难。
reportAggregateDF['PORT_WEIGHT'] = reportAggregateDF['SEC_WEIGHT_RATE']
[(reportAggregateDF['PORT_ID'] == portID) &
(reportAggregateDF['SEC_ID'] == 0) &
(reportAggregateDF['GROUP_LIST'] == " ") &
(reportAggregateDF['START_DATE'] == reportAggregateDF['START_DATE'].ix[:]) &
(reportAggregateDF['END_DATE'] == reportAggregateDF['END_DATE'].ix[:])].sum()
显然,最后两个条件中的 .ix[:] 并没有为我做任何事情,但是有没有办法使总和以我所在的行为条件而不循环?我的目标是不做任何循环,而是使用纯向量操作。