Python 检查整个对象列是否为字符串

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

即使数据类型是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
在执行
df[“posal”]时返回
object
。数据类型

  • 但是,
    df2
    .str
    方法,例如
    df2[“postal”].str.lower()
    ,但
    df1
    没有
  • 类似地,
    df1
    可以对其进行数学运算,例如
    df1*2

这与其他SO问题不同。他们询问一列(而不是整个列)中是否有字符串。e、 g:

您可以使用:

从文档中:

有效地推断传递的val或类似列表的值数组的类型。返回描述类型的字符串


试试看:但是,我通常使用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'