我目前正在使用以下代码汇总数字。对于dataframe
中的每个元素,我设置了一些可以求和的条件,但它是已创建的报告中最慢的部分。有没有更快的方法来识别数据框中以某个字符串开头的所有元素?
for idx, eachRecord in attributionCalcDF.T.iteritems():
if (attributionCalcDF['SEC_ID'].ix[idx] == 0):
currentGroup = lambda x: str(x).startswith(attributionCalcDF['GROUP_LIST'].ix[idx])
currentGroupArray = attributionCalcDF['GROUP_LIST'].map(currentGroup)
attributionCalcDF['ROLLUP_DAILY_TIMING_IMPACT'].ix[idx] = (
attributionCalcDF['DAILY_TIMING_IMPACT'][(attributionCalcDF['SEC_ID'] != 0) &
(currentGroupArray) &
(attributionCalcDF['START_DATE'] == attributionCalcDF['START_DATE'].ix[idx])].sum())
attributionCalcDF['ROLLUP_DAILY_STOCK_TO_GROUP_IMPACT'].ix[idx] = (
attributionCalcDF['DAILY_STOCK_TO_GROUP_IMPACT'][(attributionCalcDF['SEC_ID'] != 0) &
(currentGroupArray) &
(attributionCalcDF['START_DATE'] == attributionCalcDF['START_DATE'].ix[idx])].sum())
答案 0 :(得分:1)
你可能会受到currentGroup
函数的这一部分的重创:
attributionCalcDF['GROUP_LIST'].ix[idx]
尝试将其保存到临时变量并使用startswith
中的temp变量。我计划很快将向量化的字符串函数添加到pandas中,这样在这些情况下也会有很大的帮助。