BILLING_DATE OOQ AQ SQ BILLING_HOUR
26-06-2022 0 1 5 0
26-06-2022 22 25 02 8
26-06-2022 07 17 76 10
a=df.melt(['BILLING_DATE','BILLING_HOUR'],var_name='items',value_name=None).set_index(['BILLING_DATE','items','BILLING_HOUR']).squeeze().unstack().rename_axis(columns=None).fillna(0).astype(int).reset_index()
输出:
BILLING_DATE items 0 8 10
0 26-06-2022 AQ 1 25 17
1 26-06-2022 OOQ 0 22 07
2 26-06-2022 SQ 07 17 76
但是我想:
BILLING_DATE items 0 8 10
0 26-06-2022 OOQ 0 22 0
1 26-06-2022 AQ 1 25 17
2 26-06-2022 SQ 5 02 76
您可以根据列的原始顺序进行排序:
sorter = pd.Series({k:v for v,k in enumerate(df.columns)}).get
a = a.sort_values('items', key=sorter)
输出:
BILLING_DATE items 0 8 10
1 26-06-2022 OOQ 0 22 7
0 26-06-2022 AQ 1 25 17
2 26-06-2022 SQ 5 2 76