【问题标题】:Groupby with transform and rename columns pandasGroupby 转换和重命名列 pandas
【发布时间】:2021-02-24 11:23:48
【问题描述】:

我有一个 groupby-transform 和 rename 列

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”分组并使用日期列进行转换和重命名

预期输出是:

【问题讨论】:

    标签: python python-3.x pandas dataframe data-manipulation


    【解决方案1】:

    使用to_datetime 进行正确排序,使用DataFrame.set_indexDataFrame.unstackDataFrame.sort_index 进行整形和最后一个列表理解,使用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  
    

    【讨论】:

      猜你喜欢
      • 2017-03-28
      • 2013-10-31
      • 2017-01-12
      • 2020-06-22
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      相关资源
      最近更新 更多