pandas-python对特定行子集的分组计算

2024-06-16 10:16:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个样本数据集:

import pandas as pd
d = {
 'unit': ['UD', 'UD', 'UD', 'UD', 'UD','UD','UC','UC', 'UC', 'UC','UC','UC'],
 'N-D': [ 'Q1', 'Q2', 'Q3', 'Q4','Q5','Q6','Q1', 'Q2', 'Q3', 'Q4','Q5','Q6'],
 'casenumber': [1, 2, 3, 4, 5, 6,7,8,9,10,11],
 'DaysV' : [11, 12, 13, 14, 15, 16, 17,18,19,20,21]

}
df = pd.DataFrame(d)
df = df.reindex_axis(['unit','N-D','casenumber','DaysV'], axis=1)  #rearranging column order

看起来是这样的,为了便于说明,我把数字简化了:

^{pr2}$

我想为每个'unit'添加2行sum(casenumber)和sum(DaysV),但跳过第3季度。 期望输出:

  unit N-D  casenumber  DaysV
   UD  Q1           1     14
   UD  Q2           2     15
   UD  Q3           3     16
   UD  Q4           4     17
   UD  Q5           5     18
   UD  Q6           6     19
   UD SUM(Q1,Q2)    3     29
   UD SUM(Q4,Q5,Q6) 15    54
   UC  Q1           7     20
   UC  Q2           8     21
   UC  Q3           9     22
   UC  Q4           10    23
   UC  Q5           11    24
   UC  Q6           12    25
   UC SUM(Q1,Q2)    15    41
   UC SUM(Q4,Q5,Q6) 33    72

Tags: dfunitpdsumaxisucq3ud
1条回答
网友
1楼 · 发布于 2024-06-16 10:16:26
d = {
 'unit': ['UD', 'UD', 'UD', 'UD', 'UD','UC', 'UC', 'UC','UC','UC'],
 'N-D': [ 'Q1', 'Q2', 'Q3', 'Q4','Q5','Q1', 'Q2', 'Q3', 'Q4','Q5'],
 'casenumber': [1, 2, 3, 4, 5, 6,7,8,9,10],
 'DaysV' : [11, 12, 13, 14, 15, 16, 17,18,19,20]

}
df = pd.DataFrame(d)
df = df.reindex_axis(['unit','N-D','casenumber','DaysV'], axis=1) 

df = df.assign(group=np.where(df['N-D'].isin(['Q1','Q2']),'Sum(Q1,Q2)',np.where(df['N-D'].isin(['Q4','Q5']),'Sum(Q4,Q5)',np.nan)))

df_out = pd.concat([df.drop('group',axis=1),
          df.groupby(['unit','group']).sum().reset_index().query('group != "nan"').rename(columns={'group':'N-D'})])

输出:

^{pr2}$

编辑添加的排序

df_out.sort_values(by=['unit','N-D'])

输出:

  unit         N-D  casenumber  DaysV
5   UC          Q1           6     16
6   UC          Q2           7     17
7   UC          Q3           8     18
8   UC          Q4           9     19
9   UC          Q5          10     20
0   UC  Sum(Q1,Q2)          13     33
1   UC  Sum(Q4,Q5)          19     39
0   UD          Q1           1     11
1   UD          Q2           2     12
2   UD          Q3           3     13
3   UD          Q4           4     14
4   UD          Q5           5     15
3   UD  Sum(Q1,Q2)           3     23
4   UD  Sum(Q4,Q5)           9     29

相关问题 更多 >