如何在Python中使用带条件的Groupby

如何在Python中使用带条件的Groupby,python,pandas,dataframe,group-by,conditional-statements,Python,Pandas,Dataframe,Group By,Conditional Statements,我有一个数据帧,叫做合并的能量 merged_df_energy.info() <class 'pandas.core.frame.DataFrame'> Int64Index: 11232 entries, 0 to 11231 Data columns (total 17 columns): TIMESTAMP 11232 non-null datetime64[ns] P_ACT_KW

我有一个数据帧,叫做合并的能量

merged_df_energy.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 11232 entries, 0 to 11231
Data columns (total 17 columns):
TIMESTAMP                       11232 non-null datetime64[ns]
P_ACT_KW                        11232 non-null int64
PERIODE_TARIF                   11232 non-null object
P_SOUSCR                        11232 non-null int64
high_energy                     11232 non-null int64
medium_energy                   11232 non-null int64
low_energy                      11232 non-null int64
0ACT_TIME_ETA_PRG_P2REF_RM      11232 non-null int64
0ACT_TIME_ETA_PRG_VDES_RM       11232 non-null int64
0ACT_TIME_ETA_PRG_P3REF_RM      11232 non-null int64
0ACT_TIME_ETA_POMP_RECIRC_N1    11232 non-null int64
0ACT_TIME_ETA_POMP_RECIRC_N2    11232 non-null int64
0ACT_TIME_ETA_POMP_RECIRC_N3    11232 non-null int64
0ACT_TIME_ETA_SURPRES_AIR_N1    11232 non-null int64
0ACT_TIME_ETA_SURPRES_AIR_N2    11232 non-null int64
0ACT_TIME_ETA_SURPRES_AIR_N3    11232 non-null int64
class_energy                    11232 non-null object
dtypes: datetime64[ns](1), int64(14), object(2)
memory usage: 1.5+ MB
我试着计算以下总和的总和:我试着计算以下总和的总和:我试着计算以下总和的总和:我试着计算以下总和的总和:我试着计算:我试着计算以下总和的总和:我试着计算时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间:时间。时间:时间:时间:时间:时间:时间:时间:时间:时间:时间。时间:时间:时间:时间:时间:时间。时间:时间:时间:时间:时间:时间:时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间。时间分组方式(能量等级)

为此,我做了:

df_F1 = (merged_df_energy.groupby(by=['class_energy'], as_index=False)['0ACT_TIME_ETA_PRG_P2REF_RM', '0ACT_TIME_ETA_PRG_VDES_RM','0ACT_TIME_ETA_PRG_P3REF_RM','0ACT_TIME_ETA_POMP_RECIRC_N1','0ACT_TIME_ETA_POMP_RECIRC_N2', '0ACT_TIME_ETA_POMP_RECIRC_N3', '0ACT_TIME_ETA_SURPRES_AIR_N1', '0ACT_TIME_ETA_SURPRES_AIR_N2', '0ACT_TIME_ETA_SURPRES_AIR_N3' ].sum())

它工作正常,但我想知道在这种情况下(如果PERIODE_TARIF='HP')如何做到这一点?

我认为您需要在
groupby
之前:

编辑:

如果列的顺序从未更改,则可以使用:

cols = merged_df_energy.columns[7:16]
print (cols)
Index(['0ACT_TIME_ETA_PRG_P2REF_RM', '0ACT_TIME_ETA_PRG_VDES_RM',
       '0ACT_TIME_ETA_PRG_P3REF_RM', '0ACT_TIME_ETA_POMP_RECIRC_N1',
       '0ACT_TIME_ETA_POMP_RECIRC_N2', '0ACT_TIME_ETA_POMP_RECIRC_N3',
       '0ACT_TIME_ETA_SURPRES_AIR_N1', '0ACT_TIME_ETA_SURPRES_AIR_N2',
       '0ACT_TIME_ETA_SURPRES_AIR_N3'],
      dtype='object')
merged_df_energy1 = merged_df_energy[merged_df_energy.PERIODE_TARIF == 'HP']

cols = ['0ACT_TIME_ETA_PRG_P2REF_RM', 
       '0ACT_TIME_ETA_PRG_VDES_RM',
       '0ACT_TIME_ETA_PRG_P3REF_RM',
       '0ACT_TIME_ETA_POMP_RECIRC_N1',
       '0ACT_TIME_ETA_POMP_RECIRC_N2', 
       '0ACT_TIME_ETA_POMP_RECIRC_N3', 
       '0ACT_TIME_ETA_SURPRES_AIR_N1', 
       '0ACT_TIME_ETA_SURPRES_AIR_N2', 
       '0ACT_TIME_ETA_SURPRES_AIR_N3']
df_F1 = (merged_df_energy1.groupby(by=['class_energy'], as_index=False)[cols].sum())

print (df_F1)
  class_energy  0ACT_TIME_ETA_PRG_P2REF_RM  0ACT_TIME_ETA_PRG_VDES_RM  \
0         high                         100                          0   

   0ACT_TIME_ETA_PRG_P3REF_RM  0ACT_TIME_ETA_POMP_RECIRC_N1  \
0                         100                             0   

   0ACT_TIME_ETA_POMP_RECIRC_N2  0ACT_TIME_ETA_POMP_RECIRC_N3  \
0                             0                             0   

   0ACT_TIME_ETA_SURPRES_AIR_N1  0ACT_TIME_ETA_SURPRES_AIR_N2  \
0                             0                             0   

   0ACT_TIME_ETA_SURPRES_AIR_N3  
0                             0  
cols = merged_df_energy.columns[7:16]
print (cols)
Index(['0ACT_TIME_ETA_PRG_P2REF_RM', '0ACT_TIME_ETA_PRG_VDES_RM',
       '0ACT_TIME_ETA_PRG_P3REF_RM', '0ACT_TIME_ETA_POMP_RECIRC_N1',
       '0ACT_TIME_ETA_POMP_RECIRC_N2', '0ACT_TIME_ETA_POMP_RECIRC_N3',
       '0ACT_TIME_ETA_SURPRES_AIR_N1', '0ACT_TIME_ETA_SURPRES_AIR_N2',
       '0ACT_TIME_ETA_SURPRES_AIR_N3'],
      dtype='object')