Python 检查整个对象列是否为字符串
即使数据类型是object,如何检查列是字符串还是其他类型(例如int或float) (理想情况下,我希望此操作矢量化,而不是Python 检查整个对象列是否为字符串,python,pandas,Python,Pandas,即使数据类型是object,如何检查列是字符串还是其他类型(例如int或float) (理想情况下,我希望此操作矢量化,而不是applymap检查每一行…) 导入io #美国邮政编码 df1_str=“”id,邮政 1,12345 2,90210 3,""" df1=pd.read\U csv(io.StringIO(df1\U str)) df1[“postal”]=df1[“postal”]。astype(“O”)#是一个对象(由于第3行为空,因此类型为float) df1和df2在执行d
applymap
检查每一行…)
导入io
#美国邮政编码
df1_str=“”id,邮政
1,12345
2,90210
3,"""
df1=pd.read\U csv(io.StringIO(df1\U str))
df1[“postal”]=df1[“postal”]。astype(“O”)#是一个对象(由于第3行为空,因此类型为float)
df1
和df2
在执行df[“posal”]时返回object
。数据类型
- 但是,
有df2
方法,例如.str
,但df2[“postal”].str.lower()
没有df1
- 类似地,
可以对其进行数学运算,例如df1
df1*2
这与其他SO问题不同。他们询问一列(而不是整个列)中是否有字符串。e、 g:
试试看:但是,我通常使用pd.to_numeric,而不会出现严重的性能问题。如果pandas开发人员将来在df.info()中包含一个可选参数,那就太酷了。它可以显示每列中每种数据类型的值计数,也可以是可选参数。
# British post codes
df2_str = """id,postal
1,EC1
2,SE1
3,W2"""
df2 = pd.read_csv(io.StringIO(df2_str))
df2["postal"] = df2["postal"].astype("O") # is an object (of type string)
>>> pd.api.types.infer_dtype(df2["postal"])
'string'
>>> pd.api.types.infer_dtype(df1["postal"])
'floating'