这是来自样本csv
大致看起来像这5列
剪贴板:
Year Course Modul Q1 Q2
2015 Physics CS1203 4 2
2015 Physics CS1203 4 3
2015 Physics CS1203 3 1
2015 Physics CS1203 4 4
2015 English IR0001 2 5
2015 English IR0001 1 2
2015 English IR0001 3 1
2015 English IR0001 5 3
2015 English IR0001 4 3
代码:
df = pd.read_clipboard()
我按模块分组,现在我想计算模块CS1203中的4个数。我是新来的,如果这是一个愚蠢的问题,请提前抱歉。我非常感谢你的帮助。
谢谢
答案 0 :(得分:2)
我认为你需要boolean indexing
:
q
如果需要计算所有df = pd.melt(df, id_vars=['year','course','module'], value_name='q')
year course module q1 q2
0 2015 Physics CS1203 4 2
1 2015 Physics CS1203 4 3
2 2015 Physics CS1203 3 1
3 2015 Physics CS1203 4 4
4 2015 English IR0001 2 5
5 2015 English IR0001 1 2
6 2015 English IR0001 3 1
7 2015 English IR0001 5 3
8 2015 English IR0001 4 3
print (df[(df.module == 'CS1203') & (df.q == 4)])
year course module variable q
0 2015 Physics CS1203 q1 4
1 2015 Physics CS1203 q1 4
3 2015 Physics CS1203 q1 4
12 2015 Physics CS1203 q2 4
print (len(df[(df.module == 'CS1203') & (df.q == 4)]))
4
列,请先使用melt
:
{{1}}
答案 1 :(得分:2)
您可以先按模块(df.module == 'CS1203'
)过滤DF,然后过滤列,仅选择匹配q\d+
RegEx的列,仅选择4
,最后计算总和:
In [74]: (df[df.module == 'CS1203'].filter(regex=r'q\d+') == 4).sum()
Out[74]:
q1 3
q2 1
dtype: int64
答案 2 :(得分:1)