results_table是一个pd.DataFrame
当我
print(type(results_table.loc[0,'Mean recall score']))
返回
<class 'numpy.float64'>
每个项目都是float
但是当我
print(results_table['Mean recall score'].dtype)
返回
object
为什么会有这种行为?
答案 0 :(得分:0)
第一个注释df.loc[0, x]
仅考虑行标签0
和列标签x
中的值,不整个数据框。现在让我们考虑一个示例:
df = pd.DataFrame({'A': [1.5, 'hello', 'test', 2]}, dtype=object)
print(type(df.loc[0, 'A'])) # type of single element in series
<class 'float'>
print(df['A'].dtype) # type of series
object
如您所见,object
dtype系列可以容纳任意Python对象。您甚至可以根据需要提取系列中每个元素的类型:
print(df['A'].map(type))
0 <class 'float'>
1 <class 'str'>
2 <class 'str'>
3 <class 'int'>
Name: A, dtype: object
object
dtype系列只是指向连续内存块中保存的各种对象的指针的集合,数字序列可能就是这种情况。这可与Python list
相提并论,并解释了为什么在使用object
而不是数字序列时性能很差。
有关上述内容的视觉表示,另请参见this answer。
答案 1 :(得分:0)
在第一个打印语句中,您从数据框中切出一个元素。您正在查看的单个项目是一个浮动项目。
在第二个打印语句中,您实际上是在提取熊猫系列(即,您要提取整列)并打印该类型。
pandas系列是一个对象,但是系列中的每个条目都是一个float。因此,这就是您获得成功的原因。