我有dataframe
:
df =
GROUP HOUR TOTAL_SERVICE_TIME TOTAL_WAIT_TIME IS_EVALUATED IS_NEGATIVE_GRADE
AAA 7 24 32 0 0
AAA 7 23 30 1 0
AAA 8 25 31 1 1
BBB 7 26 33 1 0
BBB 8 27 31 1 0
我想调整以下给定的代码,仅按GROUP
对数据进行分组。我不想使用专栏HOUR
。我想知道我是否可以在没有pivot_table
的情况下使用HOUR
,以便数据仅按GROUP
分组,而忽略HOUR
?
piv_df = df.pivot_table(index='GROUP', columns='HOUR', fill_value=0).stack()
avg_tot = piv_df[['TOTAL_SERVICE_TIME', 'TOTAL_WAIT_TIME']].add_prefix("AVG_")
avg_pct1 = piv_df['IS_EVALUATED'].mul(100).astype(int)
avg_pct2 = piv_df['IS_NEGATIVE_GRADE'].mul(100).astype(int)
fresult = avg_tot.join(avg_pct1.to_frame("AVG_PERCENT_EVAL_1")).join(avg_pct2.to_frame("AVG_PERCENT_NEGATIVE")).reset_index()
答案 0 :(得分:3)
如果没有columns='Hour'
,则不再需要stack
piv_df = df.pivot_table(index='GROUP', fill_value=0)
avg_tot = piv_df[['TOTAL_SERVICE_TIME', 'TOTAL_WAIT_TIME']].add_prefix("AVG_")
avg_pct1 = piv_df['IS_EVALUATED'].mul(100).astype(int)
avg_pct2 = piv_df['IS_NEGATIVE_GRADE'].mul(100).astype(int)
fresult = avg_tot.join(avg_pct1.to_frame("AVG_PERCENT_EVAL_1")).join(avg_pct2.to_frame("AVG_PERCENT_NEGATIVE")).reset_index()
fresult