我试图准确理解 numpy
和 pandas
是如何交互的。特别是,pandas.Series
对象是一个 ndarray
,其标签符合文档字符串。 numpy
方法似乎在这些类型的对象上工作得很好。是否有在引擎盖下的某个地方进行转换?我能够挖掘的最好的是调用 numpy.asanyarray()
将 pandas.Series
转换为 ndarray
numpy
函数。内部还有其他事情发生吗?
最佳答案
不,严格来说,pandas
容器不是 numpy.ndarray
对象。也就是说,它们不继承自它们。 IOW:
In [5]: import pandas as pd
In [6]: df = pd.DataFrame()
In [7]: s = pd.Series()
In [8]: import numpy as np
In [9]: isinstance(df, np.ndarray)
Out[9]: False
In [10]: isinstance(s, np.ndarray)
Out[10]: False
或者,更直接地说:
In [12]: issubclass(pd.DataFrame, np.ndarray), issubclass(pd.Series, np.ndarray)
Out[12]: (False, False)
简单地说,这些容器包装 numpy.ndarray
对象,并公开许多相同的方法。没有类型转换正在进行。在像 Python 这样使用鸭子类型的语言中,转换不是一个非常有用的概念。
关于python - pandas 和 numpy 的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49662776/