cars.iloc[[3, 0]]、cars.iloc[[3],[0]]和cars.iloc[3, 0]之间的区别是什么?

4

我正在学习pandas并且在处理汽车数据(csv文件)。我运行了以下命令:

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

这个命令会返回csv文件中第4行和第1行的数据。

Out[2]: 
cars_per_cap        country drives_right

IN 18 印度 False US 809 美国 True

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

Out[7]: 
cars_per_cap

IN 18

3) cars.iloc[3, 0]

Out[9]: 18

我对第一条和第三条命令感到困惑,我检查了所有的类型,前两个是DataFrame而第三个不是。然而,为什么第一和第三个输出不同呢?任何帮助将不胜感激。

1个回答

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

最后是选择多行和多列的方法:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接