如何在Pandas DataFrame中检查列值的类型

时间:2019-04-03 10:43:16

标签: python pandas

我可以使用df.dtypes检查列类型,其中df是pandas DataFrame。但是,我的问题有点不同。我有以下DataFrame:

col1 col2
0    <class 'pandas._libs.tslibs.timestamps.Timestamp'>
1    <class 'pandas._libs.tslibs.timestamps.Timestamp'>
2    <class 'float'>
3    NaN
4    <class 'pandas._libs.tslibs.timestamps.Timestamp'>

df["col2"].dtypes返回object

我需要创建一个新列is_timestamp来检查col2的值是否为pandas时间戳。为了进行测试,我尝试了以下代码:

isinstance(df_viz["col2"][0], pd._libs.tslibs.timestamps.Timestamp)

但是它返回False

预期输出:

col1 col2                                                 col3
0    <class 'pandas._libs.tslibs.timestamps.Timestamp'>   Yes
1    <class 'pandas._libs.tslibs.timestamps.Timestamp'>   Yes
2    <class 'float'>                                      No
3    NaN                                                  No
4    <class 'pandas._libs.tslibs.timestamps.Timestamp'>   Yes

2 个答案:

答案 0 :(得分:2)

尝试:

df_viz['col3']=(df_viz.col2.transform(lambda x:
  np.where(x==pd._libs.tslibs.timestamps.Timestamp,'Yes','No')))

答案 1 :(得分:1)

您可以像这样检查每一行

df['check_datetime'] = [type(val) == datetime.datetime for val in df['datime_field']]

我不确定您的类型,可以通过(type(val))查找类型并将其放入代码中

如果您想要“是”和“否”

可以使用

df['my_col'] = np.where(df['my_col'] is True,"YES","NO)

my try code