如何将 numpy 数组存储在 Pandas 数据框的列中?

Posted

技术标签:

【中文标题】如何将 numpy 数组存储在 Pandas 数据框的列中?【英文标题】:How to store a numpy arrays in a column of a Pandas dataframe? 【发布时间】:2013-11-03 15:38:44 【问题描述】:

是否可以将任意numpy 数组存储为Pandas 数据框中的单个 列的值?

数组都是二维的,我打算用它们来计算同一数据框中其他列的值。

提供一些我在这里尝试做的事情的背景:

每个数组都是某个网络的邻接矩阵,对于每个网络,我想计算其各种特征(例如密度、中心性、聚类系数等),这些特征实际上是同一数据帧中的其他列。

【问题讨论】:

可能是我,但我觉得这个问题不够清楚 FWIW 我认为您的意图不符合您的要求。虽然您可以将任意对象存储为值,但您无法以矢量化的方式对它们做很多事情。 @DSM,数组实际上只是不同图的邻接矩阵,同一个数据框中的其他列是基于每个矩阵计算的各种网络特征。您是否建议我应该分解矩阵并将矩阵的每一行存储在单独的列中? @RomanPekar,我已经编辑并在我的问题中提供了更多信息。 【参考方案1】:

将它们存储为元素,就像存储任何其他数据一样:

import numpy as np
import pandas as pd
a = np.arange(10).reshape(2,5)
b = np.arange(10, 20).reshape(2,5)
pd.DataFrame('foo':[42,51], 'arr':[a,b])
Out[10]: 
                                            arr  foo
0            [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]   42
1  [[10, 11, 12, 13, 14], [15, 16, 17, 18, 19]]   51

请注意,您尝试做的事情听起来更像是使用Panel

【讨论】:

注意,Panel 现已弃用。 这个df不能用PyTables格式存储,df.to_hdf('test.hdf', key='xxx', format='table')会失败 @Boud 通过这种方式,numpy 数组被存储为一个系列。有什么办法可以在数据框中将其保存为numpy.ndarray【参考方案2】:

您是什么意思将任意 numpy 数组存储为 Pandas 数据帧中列的值?

这样的?

import numpy as np
import pandas as pd


x = np.random.randn(50, 25)
random_frame = pd.DataFrame(x)

这会将数组 x 存储在列名称为 0、1、2、3 的 DataFrame 中......你能澄清一下吗?我认为这更像是一个评论,但我不知道我是否可以评论。

【讨论】:

如果可能的话,我想将数组作为 single 列的值存储在数据框中。 我猜二维是 n x m,而不是 nx1 对吧?我不知道您是否可以将 n x m 数组存储为数据帧的单列。可能我只是没见过。很想看看如何。

以上是关于如何将 numpy 数组存储在 Pandas 数据框的列中?的主要内容,如果未能解决你的问题,请参考以下文章

python - 如何将 numpy 数组附加到 pandas 数据帧

如何将稀疏的 pandas 数据帧转换为 2d numpy 数组

将 pandas 中的单行输出到数组

如何使用for循环创建一定长度的numpy数组(或pandas数据框)?

使用列表中的标签将 numpy 数组转换为 pandas 数据框

如何将 Pandas DataFrame 的列和行子集转换为 numpy 数组?