Виберіть рядки Pandas на основі індексу списку


105

У мене є df кадр даних:

   20060930  10.103       NaN     10.103   7.981
   20061231  15.915       NaN     15.915  12.686
   20070331   3.196       NaN      3.196   2.710
   20070630   7.907       NaN      7.907   6.459

Тоді я хочу вибрати рядки з певними порядковими номерами, які вказані у списку, припустимо, тут [1,3], а потім ліворуч:

   20061231  15.915       NaN     15.915  12.686
   20070630   7.907       NaN      7.907   6.459

Як або яка функція може це зробити?

Відповіді:


130
List = [1, 3]
df.ix[List]

повинен зробити трюк! Коли я індексую рамки даних, я завжди використовую метод .ix (). Його так простіше і гнучкіше ...

ОНОВЛЕННЯ Це вже не прийнятий метод індексації. ixМетод є застарілим. Використовувати .ilocдля індексації на основі цілих чисел та .locдля індексування на основі міток.


14
Зараз це застаріло, .iloc слід використовувати для індексації позицій
t_warsop

86

ви також можете використовувати iloc:

df.iloc[[1,3],:]

Це не буде працювати, якщо індекси у вашому фреймі даних не відповідають порядку рядків через попередні обчислення. У такому випадку використовуйте:

df.index.isin([1,3])

... як це пропонується в інших відповідях.


61

Інший спосіб (хоча це і довший код), але він швидший, ніж наведені вище коди. Перевірте це за допомогою функції% timeit:

df[df.index.isin([1,3])]

PS: Ви з'ясували причину

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


1
використовувати df.index.get_level_values(0).isinдля
multiindex

4

Для великих наборів даних в пам'яті ефективно читати лише вибрані рядки через skiprowsпараметр.

Приклад

pred = lambda x: x not in [1, 3]
pd.read_csv("data.csv", skiprows=pred, index_col=0, names=...)

Тепер це поверне DataFrame з файлу, який пропускає всі рядки, крім 1 та 3.


Деталі

З документів :

skiprows : як список, або ціле, або дзвони, за замовчуванням None

...

Якщо вона викликається, функція дзвінка буде оцінюватися відповідно до індексів рядків, повертаючи значення True, якщо рядок слід пропустити, а в іншому - False. Прикладом коректного аргументу, що викликається, може бутиlambda x: x in [0, 2]

Ця функція працює у версіях панд 0.20.0+. Дивіться також відповідний випуск та пов’язаний пост .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.