對於混合類型的主叫.values
的DataFrames多個塊(每個D型)轉換成包羅萬象的D型細胞之一numpy的陣列。對於大型幀,此轉換速度可能較慢。
In [11]: pd.DataFrame([[1, 2.]]).values
Out[11]: array([[ 1., 2.]])
In [12]: pd.DataFrame([[1, 2., 'a']]).values
Out[12]: array([[1, 2.0, 'a']], dtype=object)
與定時的例子:
In [21]: df = pd.DataFrame(np.random.randn(10000))
In [22]: %timeit df.values # no conversion
100000 loops, best of 3: 3.72 µs per loop
In [23]: df[1] = 'a' # add column of object dtype
In [24]: %timeit df.values # conversion to object dtype
1000 loops, best of 3: 681 µs per loop
您可以看到數據經由._data
屬性存儲在圖塊管理員。
爲了回答這個問題,因爲該屬性的值是計算每個返回numpy的陣列具有不同的ID /存儲器地址等A is df.values
爲False時間。您需要使用類似numpy的array_equal:
In [31]: df.values is df.values
Out[31]: False
In [32]: np.array_equal(df.values, df.values)
Out[32]: True
感謝您的解釋。現在我明白了.value調用的底層工作原理。 – user3377229