numpy.dtype对象打印两种不同类型的格式化输出。为什么?

时间:2019-01-06 01:07:47

标签: python pandas numpy dataframe

我不知道是否应该说这是一件小事,但这一直困扰着我。 numpy.dtype打印格式不同的输出,一个不带print语句,另一个带print语句。这是一个示例:

train = pd.read_csv("train.csv")
In [10]: train.dtypes
Out[10]:
first_active_month     object
card_id                object
feature_1               int64
feature_2               int64
feature_3               int64
target                float64
dtype: object

In [5]: train['card_id'].dtypes
Out[5]: dtype('O')

In [11]: print(train['card_id'].dtypes)
object

请查看最后两个命令的输出。当不使用'print'语句进行打印时,输出为'dtype('O')';当使用'print'语句进行打印时,输出为'object'。

我已阅读numpy.dtype手册,但找不到这两种不同输出格式的原因。此外,以下工作原理:

In [16]: train['card_id'].dtypes in ['object']
Out[16]: True

我将不胜感激。

2 个答案:

答案 0 :(得分:2)

在REPL中评估表达式时,它将打印对象的repr。当您使用print函数时,它将首先尝试对象的str,即,与定义类型的类的__repr____str__相对应的方法。

所以尝试

print(repr(train['card_id'].dtypes))
print(str(train['card_id'].dtypes))

答案 1 :(得分:1)

它们是同一个东西,并且具有等效性。只是print()进行了唯一解析。

dtype('O')=一个python对象。

Dtypes