Python 如何在pd.Dataframe中存储不同形状但形状相同[0]的Ndarray?

Python 如何在pd.Dataframe中存储不同形状但形状相同[0]的Ndarray?,python,pandas,numpy,Python,Pandas,Numpy,例如,我有 a = np.zeros((5, 6, 7)) b = np.ones((5, 8, 9, 10)) 我想要 df = pd.Dataframe() df["a"] = a df["b"] = b 我明白了 AssertionError:新值的形状必须与manager兼容 形状 我希望Df有2列和5行。投票时 a_polled = df["a"] b_polled = df["b"] 我想 np.testing.assert_almost_equal(a, a_polled)

例如,我有

a = np.zeros((5, 6, 7))
b = np.ones((5, 8, 9, 10))
我想要

df = pd.Dataframe()
df["a"] = a
df["b"] = b
我明白了

AssertionError:新值的形状必须与manager兼容 形状

我希望Df有2列和5行。投票时

a_polled = df["a"]
b_polled = df["b"]
我想

np.testing.assert_almost_equal(a, a_polled)
np.testing.assert_almost_equal(b, b_polled)
通过


我如何做到这一点?

这不是熊猫数据帧的工作方式。数据帧是二维的

二维、大小可变、潜在异构的表格数据

对于N维数据,使用s(即N-d数组


一个数据帧中可能有许多维度,但强烈建议不要这样做。方法是在每个单元中存储多维对象。但是,由于该库不是为处理n-dim数据而构建的,因此您将失去它附带的所有额外功能(即没有矢量化、没有n维索引匹配、没有n维合并等)。

为什么您希望有5行?@rafaelc,因为a.shape[0]和b.shape[0]==5看起来熊猫不适合使用。然而,numpy也不够好,因为我失去了pandas提供的“类似数据库”的功能。有什么东西支持我的用例吗?你需要什么样的数据库操作?将这两个数组合并到一个大数组中对我来说毫无意义。它类似于在二维空间中,试图将矩阵
2x5
2x3
连接到一个矩阵中-你不能这样做,除非你用
NaN
s或0填充较小的矩阵以匹配较大的矩阵形状。如果是这种情况,
ndarrays
应该可以正常工作-您只需将
a
重塑为
b
size@Gulzar我认为你的问题的根源在于你仍然不知道你想做什么,因此很难找到一个解决方案来解决一个没有明确定义的问题。但让我为你勾勒出一些要点。。(一)
groupby
可以使用
itertools.groupby
在多个维度中完成,所以您可能想看看。(二) 为什么是熊猫?因为它是人性化的,并且因为它包装了numpy的一些功能而没有太多的性能损失。例如,您命名了人类喜爱的指数(例如列)……想象一下一个股票价格的数据框架,其中列有“高”、“收盘”、“开盘”、“成交量”和“前一天收盘”。如果没有列名,几乎可以使用此数据集。此外,假设您还想要一个股票代码(即股票符号,如亚马逊的AMZN)。在numpy数组中,您不能(或至少不应该)使用不同的
类型拥有不同的维度,但在pandas中,您可以!并且仍然可以对每个单独的列以矢量化的方式进行操作。当然,还有很多其他的观点需要说明,但一般来说,对于二维场景,人类更喜欢熊猫。你是对的,你的解释对我来说很有启发性