
[英]How can I adapt and use Excel's Sumif function in python pandas in a way that is fast and pythonic?
[英]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.