繁体   English   中英

如何在 Pandas 中使用 Excel 的 SUMIF function

[英]How to use Excel's SUMIF function in Pandas

我在计算“total_sum”时遇到了困难。 如果有人没有申请主题,我表示 N/A。 计算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

假设这个 dataframe 和你的一样(带有字符串索引)

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

然后您可以将每个.notna()主题值的.dot()应用于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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM