我不知道新的dtypes叫什么,但是当我创建一个像
xdf = pd.DataFrame(
{
"a": pd.Series([1, 2, 3, 4], dtype=pd.Float64Dtype),
"b": [True, False, True, False],
}
)
a
的dtype似乎是object:
>>> xdf.dtypes
a object
b bool
dtype: object
我相信,在早期(可能在不同的pandas版本上),它会显示出来,看起来像Float64
。这些类型在使用sklearn时有时会导致问题,所以我想将它们(Int64
,Float64
)转换回经典的float dtype以同时处理null。
有没有一种方法可以可靠地检测到一个dtype是一种新的类型?似乎对于一些版本,我可以得到dtype的字符串表示,看看它是否以大写字母开头,但我想知道是否有一个推荐的方法来检测新的(并最终转换回旧的)。最好是除了查看系列的所有内容并从所有类型中决定。
我有
pandas version: 1.4.4
numpy version: 1.21.6
1条答案
按热度按时间yvt65v4c1#
我认为唯一的方法是使用这样的函数:
然后在dataframe的所有列中使用它,这些列的类型如下所示: