将 pandas 数据框转换为列表列表以输入 RNN

Posted

技术标签:

【中文标题】将 pandas 数据框转换为列表列表以输入 RNN【英文标题】:Converting a pandas dataframe to a list of lists for input into an 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,所以我正在尝试以类似的格式获取我的数据。

【问题讨论】:

【参考方案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])

【讨论】:

以上是关于将 pandas 数据框转换为列表列表以输入 RNN的主要内容,如果未能解决你的问题,请参考以下文章

将 Sharepoint 列表转换为 Pandas 数据框

将字典列表转换为 Pandas 数据框

将对象列表转换为 pandas 数据框

将列表的部分转换为 Pandas 数据框

将日期和列表的元组转换为 Pandas 数据框

如何在python中使用pandas将字典列表转换为数据框[重复]