我正试图找到一种更好的方法来在Python/Pandas中断言给定数据帧的列数据类型
例如:
将熊猫作为pd导入
t=pd.DataFrame({'a':[1,2,3],'b':[2,6,0.75],'c':['foo','bar','beer']})
我想断言数据框中的特定列是数字。以下是我所拥有的:
numeric_cols=['a','b']#将给出这些
At[t[y]on为x断言[x in['int64','float']。在数值列中为y输入数据]]
最后一行断言感觉不太像python。也许是的,我只是把它塞进了一行难懂的文字里。有更好的办法吗?我想写一些类似于:
断言t[numeric\u cols].dtype.isnumeric()
但我似乎找不到这样的东西
您可以使用ptypes.is\u numeric\u dtype来标识数字列,ptypes.is\u string\u dtype来标识类似字符串的列,ptypes.is\u datetime64\u any\u dtype来标识datetime64列:
将熊猫作为pd导入
将pandas.api.types作为ptypes导入
t=pd.DataFrame({'a':[1,2,3],'b':[2,6,0.75],'c':['foo','bar','beer'],
“d”:pd.日期(范围('2000-1-1',期间=3)})
cols_to_check=['a','b']
断言列中列的所有(ptypes.is_numeric_dtype(t[col])以检查列)
#真的
assert ptypes.is_string_dtype(t['c'])
#真的
断言ptypes.datetime64是否为任何数据类型(t['d'])
#真的
pandas.api.types模块(我将其别名为ptypes)既有一个is\u datetime64\u any\u dtype函数,又有一个is\u datetime64\u dtype函数。不同之处在于它们如何处理时区感知阵列:
[239]on
:p类型。datetime64是否为任何类型(pd.DatetimeIndex([1,2,3],tz=“US/Eastern”))
Out[239]:对
At[240]on:ptypes.is_datetime64_dtype(pd.DatetimeIndex([1,2,3],tz=“US/Eastern”))
Out[240]:假