#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, :]