将 Pandas 时间序列数据帧转换为 3D 数组
Transforming a Pandas timeseries dataframe to a 3D array
我有一个包含两列 "USER_ID" 和 "Daily_BALANCE" 的时间索引数据框。数据框显示了 2018 年 4 月用户的每日余额(因此每个用户有 30 个观察值)。我需要从该数据帧生成一个 3D numpy 数组,其形状为(N(数据帧中的用户数)、30(每日日期)、1(余额)),其中包含相应的值。任何人都可以帮助我执行此操作的代码。例如,如果我们在数据框中有 100 个用户,我得到一个形状为 (100,30,1) 的数组,相当于 100 个二维数组,每个数组有 30 行和一列。
谢谢
我假设您只想在最终的 3D 数组中保留每日余额值,以便在其中检索 jth
天的 ith
用户的余额,您可以 arr[i-1, j-1, 0]
。
如果是这样,那么您首先需要按 USER_ID
和 DATE
对数据帧进行排序,然后获取 numpy 数组,最后 reshape
它
n_users = len(df.USER_ID.unique())
n_days = len(df.DATE.unique())
arr = df.sort_values(by=['USER_ID', 'DATE'])['Daily_BALANCE'].values.reshape(n_users, n_days, 1)
我有一个包含两列 "USER_ID" 和 "Daily_BALANCE" 的时间索引数据框。数据框显示了 2018 年 4 月用户的每日余额(因此每个用户有 30 个观察值)。我需要从该数据帧生成一个 3D numpy 数组,其形状为(N(数据帧中的用户数)、30(每日日期)、1(余额)),其中包含相应的值。任何人都可以帮助我执行此操作的代码。例如,如果我们在数据框中有 100 个用户,我得到一个形状为 (100,30,1) 的数组,相当于 100 个二维数组,每个数组有 30 行和一列。
谢谢
我假设您只想在最终的 3D 数组中保留每日余额值,以便在其中检索 jth
天的 ith
用户的余额,您可以 arr[i-1, j-1, 0]
。
如果是这样,那么您首先需要按 USER_ID
和 DATE
对数据帧进行排序,然后获取 numpy 数组,最后 reshape
它
n_users = len(df.USER_ID.unique())
n_days = len(df.DATE.unique())
arr = df.sort_values(by=['USER_ID', 'DATE'])['Daily_BALANCE'].values.reshape(n_users, n_days, 1)