如何在熊猫中使用Excel的SUMIF函数

时间:2020-08-14 02:03:40

标签: python pandas

我很难计算“ total_sum”。 如果有人没有申请该主题,我表示不适用。 计算total_sum时,total_sum指的是“标准”字段,并且不包含N / A。 我不擅长Python,所以我不知道如何计算“ total_sum”

            ENG   MATH ART COM  subject_sum  total_sum   
 Standard    10   10   5    5       
   A         10   N/A  N/A  1      11           15
   B         N/A  5    3    5      13           20
   C         3    3    2    2      10           30

1 个答案:

答案 0 :(得分:3)

假设此数据框与您的数据框相同(带有字符串索引)

dataframe = {'index' :['Standard', 'A', 'B', 'C'],
             'ENG' : [10, 10, np.nan, 3],
             'MATH' : [10, np.nan, 5, 3],
             'ART' : [5, np.nan, 3, 2],
             'COM' : [5, 1, 5, 2]}
df = pd.DataFrame(dataframe).set_index('index').rename_axis(None)
df['subject_sum'] = df.sum(axis=1)
df


            ENG     MATH    ART   COM   subject_sum
Standard    10.0    10.0    5.0   5     30.0
A           10.0    NaN     NaN   1     11.0
B           NaN     5.0     3.0   5     13.0
C           3.0     3.0     2.0   2     10.0

然后您可以将每个.dot()主题值中的.notna()应用于Standard的值

standard = df.loc['Standard', ['ENG', 'MATH', 'ART', 'COM']]
df['total_sum'] = df[['ENG', 'MATH', 'ART', 'COM']].notna().dot(standard)
df

结果:

            ENG     MATH    ART     COM     subject_sum     total_sum
Standard    10.0    10.0    5.0     5       30.0            30.0
A           10.0    NaN     NaN     1       11.0            15.0
B           NaN     5.0     3.0     5       13.0            20.0
C           3.0     3.0     2.0     2       10.0            30.0