Как скопировать фрейм данных, сохраняя расположение данных в C-Contiguos? - PullRequest
0 голосов
/ 23 ноября 2018

pandas dataframe copy метод возвращает фрейм данных с данными, организованными как F-Contiguos, даже если исходный фрейм данных был организован как C-Contiguos.

Пример:

In [1]: import numpy
   ...: import pandas
   ...: easy_matrix_example = numpy.array([
   ...:    [100,   20200,   20900 ],
   ...:    [200,   80200,   80900 ],
   ...:    [300,  180200,  180900 ],
   ...:    [400,  320200,  320900 ],
   ...:    [500,  500200,  500900 ],
   ...: ], dtype=numpy.float64)
   ...: easy_df_example = pandas.DataFrame(easy_matrix_example, columns=["A","B","C"])
   ...:
   ...:

In [2]: easy_df_example
Out[2]:
       A         B         C
0  100.0   20200.0   20900.0
1  200.0   80200.0   80900.0
2  300.0  180200.0  180900.0
3  400.0  320200.0  320900.0
4  500.0  500200.0  500900.0

In [5]: easy_df_example.values.flags
Out[5]:
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False

In [6]: df_copy = easy_df_example.copy()

In [7]: df_copy
Out[7]:
       A         B         C
0  100.0   20200.0   20900.0
1  200.0   80200.0   80900.0
2  300.0  180200.0  180900.0
3  400.0  320200.0  320900.0
4  500.0  500200.0  500900.0

In [8]: df_copy.values.flags
Out[8]:
  C_CONTIGUOUS : False
  F_CONTIGUOUS : True
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False

Каков рекомендуемый подход к копированию фрейма данных C-Contiguos и получению другого фрейма данных C-Contiguous?

1 Ответ

0 голосов
/ 23 ноября 2018

вы можете создать новый объект, копируя базовое значение самостоятельно.

пример:

df = pd.DataFrame(np.random.random(12).reshape(4,3), columns=list('abc'))
df2 = pd.DataFrame(df.values.copy(), columns=df.columns)
df2.values.flags
outputs:
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...