Pandas DataFrame - выбор и индексирование - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть этот объект данных pandas

df = pd.DataFrame(randn(5,4),['A','B','C','D','E'],['W','X','Y','Z'])

Я выполняю, и это таблица строк A, B, C, D, E и W, X, Y, Z столбцов

enter image description here

Каждый из этих W, X, Y, Z столбцов - это действительно серия Панд, W - это серия Панд, X, Y и Z, и все они имеют общий индекс.

По сути, это фрейм данных, набор рядов с общим индексом.

Пока все в порядке.:)

Я могу получить все значения данных столбца W больше 0 следующим образом:

Обратите внимание, что строки C исчезают

enter image description here

Но я не понимаю следующее:

Что означает это предложение?

df[df['W']>0][['Y','X']]

Результат таков:

enter image description here

Теоретически я собираю значения всех столбцов фрейма данных W, которые больше 0, и я впереди, которые просто возвращают столбцы Y и X на основепо каким критериям или условиям?

Почему я выбираю эти значения в столбцах Y и X?

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

Ответы [ 5 ]

0 голосов
/ 24 апреля 2018

Если вы сравните этот код Python, например, с Excel, вы можете указать:

IF(W>0,"Value if True(return Y and X)", "Value if False ("")")
0 голосов
/ 24 апреля 2018
  1. df['W']>0 возвращает логическую серию, в которой столбец больше нуля (true), в противном случае false

  2. df[df['W']>0] возвращает все строки изdf, где df['W']>0 равно true

  3. df['X'] возвращает столбец 'X' кадра данных

  4. Аналогично,df[['X', 'Y']] возвращает столбцы X & Y из кадра данных

, как вы можете видеть, синтаксис df[...] может иметь различные значения:

  1. его можно использовать для маскирования информационного кадра по строкам, передавая логический ряд той же длины, что и фрейм данных.
  2. его можно использовать для выбора одного столбца (передачи в строке) или группыстолбец (передать список строк)
0 голосов
/ 24 апреля 2018

Как вы объяснили в первых 2 шагах:

  1. Возвращает Y, X столбцов
df[['Y','X']]
  1. Возвращает строки, где W> 0
df[df['W']>0]
  1. Третий шаг: возвращает строки, где W> 0, а затем мы выбираем столбцы Y, X
df[df['W']>0][['Y','X']]

В основном сначала мы применяем функцию 1 к кадру данных, затем к выходной функции 2 применяется. Отсюда и окончательный вывод.

Это последовательное выполнение функций.

0 голосов
/ 24 апреля 2018

Он выполняет две независимые операции в oneliner.

  1. (фильтрация строк) df[df['W'] > 0] выбирает только те строки, в которых столбец W является положительным
  2. (фильтрация столбцов) df[['X', 'Y']]выбирает только 2 интересующих столбца
0 голосов
/ 24 апреля 2018

Когда вы делаете

df[df['W']>0]

, возвращается новый data frame.Таким образом, когда вы помещаете [['Y', 'X']] в конец этого фрейма данных, вы в основном делаете простой выбор в этом новом фрейме данных.Значения, которые появятся в столбцах X и Y, являются просто значениями для X и Y этого df.

Более подробно, df['W']>0 вернет серию Booleanто есть серия со значениями True или False.Когда вы делаете df[df['W']>0], вы фильтруете df, используя эту серию.Выходными данными будут строки вашего df, где df['W']>0 возвращает True.

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