具有变换和重命名列的Groupby

2024-09-27 09:24:07 发布

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

我有一个groupby转换和重命名列的示例

data = [['X100',"Mar '20" ,10,1,10,67], ['X110',"Apr '20", 15,7687,665,988], \
    ['X100',"Jun '20", 14,90,73,23]\
    ,['X192',"Jul '20", 14,990,273,623]]

df = pd.DataFrame(data, columns = ['Unique_ID', 'date','x','y','z','a']) 

我想按“Unique_ID”分组,并使用日期列进行转换和重命名

预期产出为:

enter image description here


Tags: id示例dfdataaprjunmarjul
1条回答
网友
1楼 · 发布于 2024-09-27 09:24:07

使用^{}进行正确排序,使用^{}^{}^{}进行重塑,使用f-strings进行最后列表理解以进行展平MultiIndex

df['date'] = pd.to_datetime(df['date'], format='%b \'%y')
df = (df.set_index(['Unique_ID','date'])
        .unstack()
        .sort_index(level=1, axis=1, sort_remaining=False))
df.columns = [f'{y.strftime("%b%y")}_{x}' for x, y in df.columns]
df = df.reset_index()
print (df)
  Unique_ID  Mar20_x  Mar20_y  Mar20_z  Mar20_a  Apr20_x  Apr20_y  Apr20_z  \
0      X100     10.0      1.0     10.0     67.0      NaN      NaN      NaN   
1      X110      NaN      NaN      NaN      NaN     15.0   7687.0    665.0   
2      X192      NaN      NaN      NaN      NaN      NaN      NaN      NaN   

   Apr20_a  Jun20_x  Jun20_y  Jun20_z  Jun20_a  Jul20_x  Jul20_y  Jul20_z  \
0      NaN     14.0     90.0     73.0     23.0      NaN      NaN      NaN   
1    988.0      NaN      NaN      NaN      NaN      NaN      NaN      NaN   
2      NaN      NaN      NaN      NaN      NaN     14.0    990.0    273.0   

   Jul20_a  
0      NaN  
1      NaN  
2    623.0  

相关问题 更多 >

    热门问题