python - 如何将熊猫数据框列表转换为 3d numpy 数组?
问题描述
如果我有这样的列表pd.DataFrame
:
df = pd.DataFrame(np.random.rand(4,5), columns = list('abcde'))
df_list = [df, df]
问题:
如何np.array
使用shape
(2, 3, 5) 将其转换为 3D?
我试图这样做np.array(df_lsit)
,但我收到以下错误:
ValueError: cannot copy sequence with size 4 to array axis with dimension 5
解决方案
df = pd.DataFrame(np.random.rand(4,5), columns = list('abcde'))
df_list = [df, df]
np_array = np.array(list(map(lambda x: x.to_numpy(), df_list)))
# to make sure the shape of np_array is correct
np_array = np_array.reshape((x, y, z))
Zth 维度中的列顺序将与 pandas DataFrame 中的列顺序相同。因此,如果您需要特定的列顺序,则需要在运行 df.to_numpy() 之前记录这些列。
当然,你可以用 NumPy 的形式记录列,但是在 pandas DataFrame 中重新排序会更容易调试。
推荐阅读
- python - 如何将数据绘制为 2x 2 矩阵
- azure - 尝试向网络适配器添加第二个 IP 地址,但在 Set-AzureRmNetworkInterface 上找不到资源 {0}
- linux - Shell,Gnuplot:从文件中的变量设置标题
- java - 复制没有父引用的树
- ansible - Ansible:从命令行覆盖库存的 ansible_host
- azure - 即使设置了令牌策略,Azure AD 刷新令牌似乎也不会过期
- android - 如何在 Kotlin 中绑定 SQLite FTS4 查询参数
- qmake - QMake 和 pkg-config
- sql - 选择失败的 SQL 更新行
- ios - 根据 iOS 设计标准,所有 1x、2x、3x 是否具有相同的字体大小?