Вопрос для новичков: есть ли усечение панды на месте?In-place версия pandas truncate?
Например
>>> df = pandas.DataFrame({'stuff':range(5)}, index=range(5))
>>> df.truncate(2,3)
возвращает новый усеченный кадр данных. Я могу сделать
>>> df = pandas.DataFrame({'stuff':range(5)}, index=range(5))
>>> df = df.truncate(2,3)
но это кажется неэффективным. Есть ли способ сделать более эффективную усечку, которая не делает копию, но делает усечение на месте? Или такая эффективность не проблема из-за какого-то uber-умного дизайна панд?
Обратите внимание, что в docstring для усечения указано, что есть опция копирования, но я не думаю, что это влияет на то, что сам кадр данных усечен, но вернётся ли это значение в качестве копии кадра данных или ссылки на часть кадр данных. Ниже то, что я имею в виду:
>>> df = pandas.DataFrame({'stuff':range(5)}, index=range(5))
>>> cp = df.truncate(2,3, copy=False)
>>> df
stuff
0 0
1 1
2 2
3 3
4 4
>>> cp['stuff'][2] = -50
>>> df
stuff
0 0
1 1
2 -50
3 3
4 4
Обратите внимание, что, когда мы используем copy=False
ФР еще не усеченный, но возвращаемый объект кусочек ФР, который при модификации также модифицирует ФР.
Спасибо.
Вы даже прочитали докшрин? – Goyo
@Goyo Я предполагаю, что вы имеете в виду вариант копирования, упомянутый в docstring. Извините за неясность в начальном посте. Опция копирования не такая же, как усечение на месте. Обновленный вопрос, чтобы отразить это. Благодарю. – oxer
См. Http://stackoverflow.com/a/22533110/2285236 – ayhan