我正在研究熊猫和汽车(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个不是。但是,为什么我得到第一和第三的不同输出?任何帮助将不胜感激。
答案 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