首页 > 解决方案 > 使用 .iloc 打印带有熊猫数据框的特定列时遇到问题

问题描述

我正在使用 pandas 创建一个 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:][:]),事实上,当我将第二个打印方法更改为这一行时,我得到了完全相同的输出。

标签: python-3.xpandasdataframeindexing

解决方案


iloc 和 loc 的正确语法是 [row index, col index]

sick_df.iloc[:, -2:]

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

sick_df.iloc[:]

返回整个数据框。现在,当您将其与

sick_df.iloc[:][2:]

您从索引 2 到数据框末尾获取所有行。


推荐阅读