我正在使用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:][:])
获得的结果,实际上,当我将第二种打印方法更改为这一行时,我将获得相同的精确输出。
答案 0 :(得分:1)
iloc和loc的正确语法是[行索引,列索引]
sick_df.iloc[:, -2:]
您的代码返回不同结果的原因是由于链接,
sick_df.iloc[:]
返回整个数据框。现在,当您用
sick_df.iloc[:][2:]
您将获得从索引2到数据帧末尾的所有行。