python - 只保留带日期的行
问题描述
我有一个从 excel 导入的非常混乱的数据框,其中只有一些行包含第一列中的日期(索引 0,没有标题)。如何删除所有不包含日期的行?
解决方案
我会使用pd.to_datetime
with errors='coerce'
,然后通过索引删除空日期:
例如:
>>> df
x y
0 2011-02-03 1
1 x 2
2 1 3
3 2012-03-03 4
>>> df[pd.to_datetime(df.x, errors='coerce').notnull()]
x y
0 2011-02-03 1
3 2012-03-03 4
注意:如果您的列中有不同的日期格式,这将导致一些问题
说明:
使用pd.to_datetime
witherrors='coerce'
将查找类似日期的字符串,NaT
如果找不到则返回(为空):
>>> pd.to_datetime(df.x, errors='coerce')
0 2011-02-03
1 NaT
2 NaT
3 2012-03-03
Name: x, dtype: datetime64[ns]
因此,您可以使用以下方法获取所有非空值notnull
:
>>> pd.to_datetime(df.x, errors='coerce').notnull()
0 True
1 False
2 False
3 True
Name: x, dtype: bool
并将其用作原始数据框的掩码
推荐阅读
- c# - NonAsync 方法将为单流调用抛出 Async
- ios - 如何删除搜索栏中的“放大镜”图标?
- swiftui - 在 SwiftUI AppLifecycle Document App 中,如何在活动的 ContentView 中获取菜单命令?
- ssl - NLB TCP 侦听器不接受 RSA 2048 自签名证书
- regex - 正则表达式和语法自由上下文转换
- c# - 如何使用 Unity 2020.3.0f1 在 Android 上获取 TimeZoneInfo?
- mysql - 为什么mysql在没有sudo的情况下仍然无法以root身份登录时要求输入密码
- php - 如何解决“找不到类 PhpOffice\PhpSpreadsheet\Reader\Xlsx”错误?
- html - 为什么 hr 标签底部有额外的空白?
- ruby-on-rails - 如何在Rails中将通过ajax回调提交的参数列入白名单?