将 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_IDDATE 对数据帧进行排序,然后获取 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)