我试图找到一种更好的方法来AssertPython/Pandas中给定 Dataframe 的列数据类型。
例如:
import pandas as pd
t = pd.DataFrame({'a':[1,2,3], 'b':[2,6,0.75], 'c':['foo','bar','beer']})
我想Assert数据框中的特定列是数值型的。下面是我所拥有的:
numeric_cols = ['a', 'b'] # These will be given
assert [x in ['int64','float'] for x in [t[y].dtype for y in numeric_cols]]
最后一行Assert并不像是一条巨蟒。也许是的,我只是把它塞进了一行难以阅读的语句中。有没有更好的方法呢?我想写这样的语句:
assert t[numeric_cols].dtype.isnumeric()
但我好像找不到这样的东西。
3条答案
按热度按时间rnmwe5a21#
可以使用
ptypes.is_numeric_dtype
标识数字列,使用ptypes.is_string_dtype
标识字符串类型的列,使用ptypes.is_datetime64_any_dtype
标识datetime64列:pandas.api.types
模块(我将其别名为ptypes
)同时具有is_datetime64_any_dtype
和is_datetime64_dtype
函数,区别在于它们如何处理类似于时区的数组:gdx19jrr2#
你能做到的
rta7y2nd3#
示例如何简单地执行python的isinstance检查列的panda数据类型,其中列是numpy datetime:
注意:dtype可以作为第二个参数对照列表/元组进行检查。
如果您对检查列与行之间的数据类型一致性感兴趣,那么使用apply的@伊利应答可能是更好的选择