【问题标题】:Converting a pandas dataframe to a list of lists for input into an RNN将 pandas 数据框转换为列表列表以输入 RNN
【发布时间】:2018-03-27 15:06:14
【问题描述】:

在 Python 中,我有一个使用 pandas.read_csv 导入的数据框,例如:

Cust_id| time_to_event_f |event_id |event_sub_id

1       100             5 2  
1       95              1 3  
1       44              3 1  
2       99              5 5  
2       87              2 2  
2       12              3 3  

数据按cust_idtime_to_event_f 排序。我正在尝试将此数据帧转换为维度张量[2,3,3],以便对于每个客户ID,我都有一个time_to_event_fevent_idevent_sub_id 的顺序列表。这个想法是将其用作张量流中 RNN 的输入。我正在关注this tutorial,所以我正在尝试以类似的格式获取我的数据。

【问题讨论】:

    标签: python pandas tensorflow deep-learning recurrent-neural-network


    【解决方案1】:

    您可以通过设置Cust_id 索引然后堆叠将原始数据框d 转换为以客户ID 为中心的系列:

    d.set_index('Cust_id').stack()
    

    结果系列将如下所示:

    Cust_id                 
    1        time_to_event_f    100
             event_id             5
             event_sub_id         2
             time_to_event_f     95
             event_id             1
             event_sub_id         3
             time_to_event_f     44
             event_id             3
             event_sub_id         1
    2        time_to_event_f     99
             event_id             5
             event_sub_id         5
             time_to_event_f     87
             event_id             2
             event_sub_id         2
             time_to_event_f     12
             event_id             3
             event_sub_id         3
    dtype: int64
    

    鉴于此表示,您的任务很简单:获取 values ndarray 并将其重塑为您的目标大小:

    series.values.reshape([2, 3, 3])
    

    这个数组可以作为 tensorflow RNN 的输入。完整代码如下:

    import pandas as pd
    from io import StringIO
    
    s = StringIO("""
    1       100             5 2  
    1       95              1 3  
    1       44              3 1  
    2       99              5 5  
    2       87              2 2  
    2       12              3 3
    """.strip())
    
    d = pd.read_table(s, names=['Cust_id', 'time_to_event_f', 'event_id', 'event_sub_id'], sep=r'\s+')
    series = d.set_index('Cust_id').stack()
    time_array = series.values.reshape([2, 3, 3])
    

    【讨论】:

      猜你喜欢
      • 2021-03-22
      • 2017-06-22
      • 2020-09-02
      • 2021-01-22
      • 2021-02-09
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      相关资源
      最近更新 更多