Python 在列不同的位置分组
我有一个数据帧df,看起来像:Python 在列不同的位置分组,python,pandas,Python,Pandas,我有一个数据帧df,看起来像: df = {'quarter':['Q1','Q1','Q1','Q2','Q2','Q2','Q3','Q3','Q3','Q4','Q4','Q4'], 'id':[1,2,3,1,2,3,1,2,3,1,2,3], 'score':['DD','DD','DD','D','DD','DD','D','D','D','D','D','D'] } quarter id score 0
df = {'quarter':['Q1','Q1','Q1','Q2','Q2','Q2','Q3','Q3','Q3','Q4','Q4','Q4'],
'id':[1,2,3,1,2,3,1,2,3,1,2,3],
'score':['DD','DD','DD','D','DD','DD','D','D','D','D','D','D']
}
quarter id score
0 Q1 1 DD
1 Q1 2 DD
2 Q1 3 DD
3 Q2 1 D
4 Q2 2 DD
5 Q2 3 DD
6 Q3 1 D
7 Q3 2 D
8 Q3 3 D
9 Q4 1 D
10 Q4 2 D
11 Q4 3 D
count
Q1
Q2 1
Q3 2
Q4 0
我正在尝试按id计算每个季度的分数,每个季度的分数不同。例如,如果一个id在第1季度的得分是DD,而该id在第2季度的得分是D,那么该id将在第2季度被计算在内。因此,最后我有一个输出,如下所示:
df = {'quarter':['Q1','Q1','Q1','Q2','Q2','Q2','Q3','Q3','Q3','Q4','Q4','Q4'],
'id':[1,2,3,1,2,3,1,2,3,1,2,3],
'score':['DD','DD','DD','D','DD','DD','D','D','D','D','D','D']
}
quarter id score
0 Q1 1 DD
1 Q1 2 DD
2 Q1 3 DD
3 Q2 1 D
4 Q2 2 DD
5 Q2 3 DD
6 Q3 1 D
7 Q3 2 D
8 Q3 3 D
9 Q4 1 D
10 Q4 2 D
11 Q4 3 D
count
Q1
Q2 1
Q3 2
Q4 0
第一季度没有计算值,因为没有上一季度可比较
我尝试过groupby,但在前几个季度无法为特定id计算分数
df.groupby(['quarter','id']).size().reset_index().groupby('Quarter').count()
首先按轴重塑形状,将移位值与ne进行比较以确定是否不相等,并按总和计算Trues值,最后将First值设置为NaN:
谢谢@jezrael。当我实施您的解决方案时,我得到了:Q1 NaN Q2 3.0 Q3.0 Q4 3.0数据类型:float64您能想出这样做的原因吗?@Stacey-使用示例数据?分数是浮动的吗?还是字符串?谢谢,它们是字符串问题是样本数据?Doh,很抱歉,分配的数据帧不正确。谢谢你的帮助!