Случайная выборка строк из фрейма данных pandas и сохранение индекса

#python #pandas

#python #pandas

Вопрос:

Я работаю с очень большим CSV-файлом (4 ГБ), 25 миллионов строк. Для выполнения анализа я хочу взять случайную выборку из примерно 100 000 строк. Я использовал функцию df1 = df.sample (n) для фрейма данных.

Я обнаружил, что значение индекса для df1 отличается от индекса в исходном df. Есть ли способ преодолеть эту проблему? Сбрасывает ли df.sample индекс в фрейме данных, который он возвращает?

Для меня важно сохранить индекс, потому что я планирую использовать его для ссылки на строку в будущем.

Я выбрал фрейм данных в df1. Когда я пытаюсь просмотреть индекс для одного из элементов в исходном df, с ним связана другая строка

введите описание изображения здесь

Комментарии:

1. То, что вы описываете, противоречит известному поведению df.sample(n) . Поэтому я предлагаю вам предоставить более конкретный пример с кодом. Возможно, игрушечный пример.

Ответ №1:

DataFrame.sample сохраняет индекс.

Проблема в вашей индексации. .iloc позволяет выбирать строки с подсчетом, начинающимся с 0, независимо от фактического индекса. Из вашего рисунка мы можем видеть, что индекс .iloc[228607] действительно 241545 (из последней строки, где Name находится). Вероятно, вы удалили несколько строк df после его создания.

Вы хотите сравнить с .loc , чтобы вы могли выбрать точно такую же строку, независимо от того, где она появляется в df :

 df.loc[228607, :]