使用.iloc在熊猫数据帧中打印特定列时出现问题

时间:2019-01-04 19:51:55

标签: python-3.x pandas dataframe indexing

我正在使用pandas创建一个4x4数据框,并尝试使用print(df.iloc[:][2:])打印所有行数据的最后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:][:])获得的结果,实际上,当我将第二种打印方法更改为这一行时,我将获得相同的精确输出。

1 个答案:

答案 0 :(得分:1)

iloc和loc的正确语法是[行索引,列索引]

sick_df.iloc[:, -2:]

您的代码返回不同结果的原因是由于链接,

sick_df.iloc[:]

返回整个数据框。现在,当您用

sick_df.iloc[:][2:]

您将获得从索引2到数据帧末尾的所有行。

相关问题