Как вы указали, .as_matrix()
устарела. (См. Ниже для сравнения с .values
.)
Независимо от того, кажется, что вы можете получить столбцы в соответствующем порядке, используя .loc
сначала:
import pandas as pd
import numpy as np
np.random.seed(444)
prices = pd.DataFrame(np.random.randn(200, 4), columns=list('abcd'))
columns = list('cad')
prices.pct_change().dropna().loc[:, columns].values
Вот источник для .as_matrix()
против .values
. Вы заметите только небольшую разницу:
def as_matrix(self, columns=None):
warnings.warn("Method .as_matrix will be removed in a future version. "
"Use .values instead.", FutureWarning, stacklevel=2)
self._consolidate_inplace()
return self._data.as_array(transpose=self._AXIS_REVERSED,
items=columns)
@property
def values(self):
self._consolidate_inplace()
return self._data.as_array(transpose=self._AXIS_REVERSED)
Следовательно, если вы действительно хотите, вы можете просто восстановить .as_matrix()
без предупреждения. (Но я бы настоятельно предпочел первый метод; это общедоступный API; он не заставляет вас иметь дело с внутренним Block
типом Pandas самостоятельно.)
chg = prices.pct_change().dropna()
val = chg._data.as_array(transpose=chg._AXIS_REVERSED, items=columns)
assert np.allclose(val, prices.pct_change().dropna().loc[:, columns].values)