【问题标题】:Arrange data in Dataframe based on dates根据日期排列数据框中的数据
【发布时间】:2017-07-21 08:27:41
【问题描述】:

给定表格的数据:

ID  Date     Highlight
1   201501   B
2   201506   C
1   201507   A
3   201508   D
2   201509   A
3   201510   B
3   201501   B

必需的输出(在数据框中)——针对每个 ID,我需要一个按发生时间顺序排列的序列:

ID     Highlight Sequence
1      B, A
2      C, A
3      D, B, B

本质上,我打算训练一个可变长度输入 - RNN 来针对每个 ID 预测序列中的下一个字符。

【问题讨论】:

    标签: python python-3.x pandas numpy dataframe


    【解决方案1】:

    我认为您首先需要to_datetimesort_values

    df['Date'] = pd.to_datetime(df['Date'], format='%Y%m')
    df = df.sort_values(['ID','Date'])
    print (df)
       ID       Date Highlight
    0   1 2015-01-01         B
    2   1 2015-07-01         A
    1   2 2015-06-01         C
    4   2 2015-09-01         A
    6   3 2015-01-01         B
    3   3 2015-08-01         D
    5   3 2015-10-01         B
    

    然后groupby 带有参数sort,因为apply 不需要默认排序:

    ...list 用于列表列

    df1 = df.groupby('ID', sort=False)['Highlight'] \
            .apply(list) \
            .reset_index(name='Highlight Sequence') \
    
    
    print (df1)
       ID Highlight Sequence
    0   1             [B, A]
    2   2             [C, A]
    1   3          [B, D, B]
    

    ...join 用于strings 列:

    df2 =  df.groupby('ID', sort=False)['Highlight']
             .apply(','.join)
             .reset_index(name='Highlight Sequence')
    
    print (df2)
    
       ID Highlight Sequence
    0   1                B,A
    1   2                C,A
    2   3              B,D,B
    

    但如果需要按行的位置排序(date 列默认排序或不重要):

    df2 = df.groupby('ID', sort=False)['Highlight'] \
            .apply(list) \
            .reset_index(name='Highlight Sequence') 
    
    print (df2)
       ID Highlight Sequence
    0   1             [B, A]
    1   2             [C, A]
    2   3          [D, B, B]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 2016-10-29
      • 1970-01-01
      • 2020-08-18
      • 2022-11-23
      • 2022-11-12
      相关资源
      最近更新 更多