Pandas apply + dtype给出意想不到的结果

时间:2016-10-27 10:09:45

标签: pandas

我最近遇到了使用pandas数据帧的一致性问题。 假设我有一个包含不同列类型的数据框:

df = pd.DataFrame({"col1": [1,2,3], "col2": ["a", "b", "c"]})

我想通过应用函数来检查列类型:

coltype = lambda col: col.dtype
df.apply(coltype, axis=0)

令人惊讶地输出:

col1    object
col2    object
dtype: object

然而,当我单独检查一列时,我得到:

coltype(df["col1"])
dtype('int64')
coltype(df["col2"])
dtype('O')

我在这里做错了什么或者它是一个错误? 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

我认为您需要apply中的参数reduce=False

print (df.apply(lambda col: col.dtype, reduce=False))
col1     int64
col2    object
dtype: object

print (df.dtypes)
col1     int64
col2    object
dtype: object