我有一个DataFrame,其中时间戳列包含混合类型。一些行以Unix时间戳(数字)报告时间,一些行以iso格式的字符串报告时间,其余的行以Pandas datetime对象报告。
我是否可以选择在timestamp列中具有非datetime对象的所有行?我想运行pd.to_datetime将这些行的timestamp列转换为datetime对象。
内置select_dtypes不能执行我想要的操作。该库函数选择(不)具有某种类型的列,但是我想选择给定列值为(而不是)特定类型的行。
示例:
df = pd.DataFrame({
'time': [
Timestamp('2019-03-31 00:00:00-0400', tz='US/Eastern'),
'2019-01-31 12:00:00-0700',
1551000000
] })
目标:
def get_not_datetime_rows(df):
"""Output the last two rows."""
类似这样的事情(假设df
是您的DataFrame,而“ Timestamp”是所讨论的列)?
from datetime import datetime
idx = df["Timestamp"].apply(lambda x: type(x) != datetime)
然后使用idx
切片您的DataFrame