我知道,对于Numpy连接,除了连接轴之外,数组的维数必须相同。但是对于Pandas拼接,即使非拼接轴的尺寸不同,也是允许的,并且只会将这些空单元格填充为“NaN”。我想知道造成这种差异的原因是什么?
沿着列的2个不同数组的Numpy串联
s1 = np.arange(3).reshape(3,1)
s2 = np.arange(2).reshape(2,1)
result=np.concatenate([s1,s2],axis=1)
print(result)
Traceback (most recent call last):
File "example.py", line 8, in <module>
result=np.concatenate([s1,s2],axis=1)
File "<__array_function__ internals>", line 180, in concatenate
ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 3 and the array at index 1 has size 2
字符串
Pandas沿着列串联2个不同系列
pd1 = Series([1,2,3])
pd2 = Series([4,5])
print(pd1)
print(pd2)
result=pd.concat([pd1,pd2],axis=1)
print(result)
0 1
0 1 4.0
1 2 5.0
2 3 NaN
型
1条答案
按热度按时间ryhaxcpt1#
在我的理解中,
numpy
是为了非常高效地执行矩阵运算而构建的,而矩阵运算需要兼容的维度。在您的示例中,数组大小不同,并且串联会导致结构不规则或参差不齐,这与numpy
不兼容。pandas
是一种更通用的数据制表工具,它通常是异构的,具有混合大小、混合类型、缺失值等。pandas
可以通过用NaN填充空格来处理交错数组,因为它不假设数据维度需要与矩阵操作兼容。