cars.iloc [[3,0]],cars.iloc [[3],[0]]和cars.iloc [3,0]

时间:2018-03-20 09:25:29

标签: python python-3.x pandas

我正在研究熊猫和汽车(csv文件)。我运行了以下命令:

1)cars.iloc [[3,0]]

Out[2]: 
cars_per_cap        country drives_right

IN 18印度假 美国809美国真实

2)cars.iloc [[3],[0]]

Out[7]: 
cars_per_cap

IN 18

3)cars.iloc [3,0]

Out[9]: 18

我在第1和第3个命令中感到困惑,我检查了所有类型,前2个是DataFrame而第3个不是。但是,为什么我得到第一和第三的不同输出?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:7)

df = pd.DataFrame({'A':list('abcdef'),
                   'B':[4,5,4,5,5,4],
                   'C':[7,8,9,4,2,3],
                   'D':[1,3,5,7,1,0],
                   'E':[5,3,6,9,2,4],
                   'F':list('aaabbb')}, index=range(10, 16))

print (df)
    A  B  C  D  E  F
10  a  4  7  1  5  a
11  b  5  8  3  3  a
12  c  4  9  5  6  a
13  d  5  4  7  9  b
14  e  5  2  1  2  b
15  f  4  3  0  4  b

选择 3。 0。行,所有列:

print (df.iloc[[3,0]])
#same as 
#print (df.iloc[[3,0], :])
    A  B  C  D  E  F
13  d  5  4  7  9  b
10  a  4  7  1  5  a

选择 3。 0。列,所有行:

print (df.iloc[:, [3,0]])

    D  A
10  1  a
11  3  b
12  5  c
13  7  d
14  1  e
15  0  f

选择 3。行 0。列 - 嵌套列表创建一个项目系列

print (df.iloc[[3],[0]])
    A
13  d

与上面相同,只有没有嵌套列表才能获得标量:

print (df.iloc[3,0])
d

另一个选择:

选择 3。 0。行, 0。列 - 第二个[]创建一列DataFrame

print (df.iloc[[3, 0],[0]])
    A
13  d
10  a

...如果省略则获取Series

print (df.iloc[[3, 0], 0])
13    d
10    a
Name: A, dtype: object

如果想要选择一行和多列:

print (df.iloc[[0], [3, 0]])
    D  A
10  1  a

print (df.iloc[0, [3, 0]])
D    1
A    a
Name: 10, dtype: object

最后是seelct多行和多列:

print (df.iloc[[3,0], [3,0]])
    D  A
13  7  d
10  1  a