を他の回答には、ファイルの読み込みにより集中しているように、私はあなたのデータフレームがファイルから読み込まれていない何らかの理由であれば、あなたも、何かを行うことができますね。
たぶん、あなたはDataFrame.drop
methodのコードを見て、あなたのデータフレームインプレースを変更するためにそれを修正する(これdrop
方法が既に行う)と他のRAWが返さ取得することができます。
class DF(pd.DataFrame):
def drop(self, labels, axis=0, level=None, inplace=False, errors='raise'):
axis = self._get_axis_number(axis)
axis_name = self._get_axis_name(axis)
axis, axis_ = self._get_axis(axis), axis
if axis.is_unique:
if level is not None:
if not isinstance(axis, pd.MultiIndex):
raise AssertionError('axis must be a MultiIndex')
new_axis = axis.drop(labels, level=level, errors=errors)
else:
new_axis = axis.drop(labels, errors=errors)
dropped = self.reindex(**{axis_name: new_axis})
try:
dropped.axes[axis_].set_names(axis.names, inplace=True)
except AttributeError:
pass
result = dropped
else:
labels = com._index_labels_to_array(labels)
if level is not None:
if not isinstance(axis, MultiIndex):
raise AssertionError('axis must be a MultiIndex')
indexer = ~axis.get_level_values(level).isin(labels)
else:
indexer = ~axis.isin(labels)
slicer = [slice(None)] * self.ndim
slicer[self._get_axis_number(axis_name)] = indexer
result = self.ix[tuple(slicer)]
if inplace:
dropped = self.ix[labels]
self._update_inplace(result)
return dropped
else:
return result, self.ix[labels]
df = DF({'one':[1,2,3,4,5,4,3,2,1], 'two':[6,7,8,9,10,9,8,7,6], 'three':[11,12,13,14,15,14,13,12,11]})
dropped = df.drop(range(5), inplace=True)
# or :
# partA, partB = df.drop(range(5))
この例では、おそらく実際にメモリ効率的ではありませんが、多分あなたはオブジェクト指向solutiのいくつかの種類を使用することによって、より良い何かを把握することができます。このように動作しますどのこのように
私が知っている限り、あなたが割り当てを行う瞬間、パンダはコピーを作成します。電車とテストの指標を保存するだけであれば効果がありますか? – ayhan
質問に答えるのではなく、おそらく他の関連するアイデア: - 読み込み時にデータセットを分割することはできませんか? - あるいは 'dask'(http://dask.pydata.org/en/latest/)のようなものを使用しますか? –
私が知っている唯一の理由は、HDF5テーブルからHDF5テーブルを別々にロードし、ロード時にスプリットを行うことです。つまり、トレーニングとして最初にいくつかの行をロードし、残りの部分をスプリットとして適切な答えを出すことができます。 – RexFuzzle