【问题标题】:How to return a dataframe column values from a For loop如何从 For 循环返回数据框列值
【发布时间】:2021-03-08 01:52:40
【问题描述】:

我正在尝试根据另一列的条目计算一列的值,我正在尝试使用 for 循环来实现这一点,我不知道如何返回整个列的值,而只是最后一次迭代,下面是我的代码示例,请帮助我找出我做错的地方。

def marks_calculation(Master_Sheet):
    for a in Master_Sheet.Marks Condition:
        if a == "Yes":
            Master_Sheet['Total'] = Master_Sheet['Total Marks']*0.85
            Master_Sheet.loc[(Master_Sheet['Total Marks'] > Master_Sheet['Basic1']) & (Master_Sheet['Total Marks'] <= Master_Sheet['Basic3']),'Total'] = (Master_Sheet['Basic1'] * Master_Sheet['Slab1']) + ((Master_Sheet['Total Marks'] - Master_Sheet['Basic1']) * Master_Sheet['Slab2'])
            Master_Sheet.loc[(Master_Sheet['Total Marks'] > Master_Sheet['Basic2']),'Total'] = (Master_Sheet['Basic1'] * Master_Sheet['Slab1']) + ((Master_Sheet['Basic2'] - Master_Sheet['Basic1']) * Master_Sheet['Slab2']) + ((Master_Sheet['Total Marks'] - Master_Sheet['Basic2']) * Master_Sheet['Slab3'])
            return Master_Sheet['Total']
        else :     
            Master_Sheet['Total'] = Master_Sheet['Aggregated Marks']
            return Master_Sheet['Total']
Master_Sheet['Total'] = Master_Sheet['Total'].replace("",0, regex=True)  
Master_Sheet[['Students','Total Marks','Aggregated Marks','Marks Condition','Total']]

例如数据

Student Condition Aggregated TotalMarks Basic1 Basic2 Slab1 Slab2 Slab3 Total
A         Yes       65.34      54.29      45     55    49%   64%   82%  28.00
B         No        75.65      94.32      23     54    73%   81%   33%  75.65
C         No        87.9       82.9       67     78    85%   54%   46%  87.90
D         Yes       59.4       92.02      75     83    53%   71%   47%  47.59
E         No        83.05      62.45      23     35    70%   35%   23%  83.05

这里只有在条件为是时才计算总计,如果为否,我们需要使用聚合中的数据。 如果 Condition 为 Yes,Total 的计算如下:

If(TotalMarksSlab1, If(AND(TotalMarks>Basic1, TotalMarksSlab1)+((TotalMarks-Basic1)Slab2) ,(Basic1Slab1)+((TotalMarks-Basic1)*Slab2)+((Basic2-TotalMarks)*Slab3)))

【问题讨论】:

标签: python-3.x pandas dataframe for-loop if-statement


【解决方案1】:

我无法理解计算示例,因此无法为 yes 列生成内容。以下行会将您的所有 'Total' No 条目更新到聚合数据列。

Master_Sheet['Total'].loc[Master_Sheet['Condition']=='No'] = Master_Sheet['Aggregated']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 2013-12-30
    • 2019-04-24
    • 2015-08-08
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    相关资源
    最近更新 更多