Неполадки при печати определенных столбцов с панелями данных pandas с использованием .iloc - PullRequest
0 голосов
/ 04 января 2019

Я создаю кадр данных 4x4 с пандами и пытаюсь напечатать последние 2 столбца со всеми данными строки, используя print(df.iloc[:][2:]), однако он печатает последние две строки и все столбцы - так же, как print(df.iloc[2:][:]). Я неправильно понимаю, как консоль интерпретирует скобки и двоеточия?

Вот код, который я выполняю:

import pandas as pd
import numpy as np

data1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12],
                  [13, 14, 15, 16]])
index = ['Worst', 'Index', 'Ever', 'Dude']
columns = ['Best', 'Columns', 'Today', 'Bro']
sick_df = pd.DataFrame(data = data1, index = index, columns = columns)

print(sick_df)
print('\n', sick_df.iloc[:][2:])

Вот вывод из вышеуказанного кода:

       Best  Columns  Today  Bro
Worst     1        2      3    4
Index     5        6      7    8
Ever      9       10     11   12
Dude     13       14     15   16

       Best  Columns  Today  Bro
Ever     9       10     11   12
Dude    13       14     15   16

Я ожидал, что второй метод печати отобразит все четыре строки с двумя последними столбцами. Этот вывод - то, что я ожидаю получить от print('\n', sick_df.iloc[2:][:]), и действительно, когда я изменяю 2-й метод печати на эту строку, я получаю точно такой же вывод.

1 Ответ

0 голосов
/ 04 января 2019

Правильный синтаксис iloc и loc: [индекс строки, индекс столбца]

sick_df.iloc[:, -2:]

Причина, по которой ваш код возвращает другой результат, связана с цепочкой,

sick_df.iloc[:]

возвращает весь фрейм данных. Теперь, когда вы связываете это с

sick_df.iloc[:][2:]

Вы получаете все строки от индекса 2 до конца фрейма данных.

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