首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将处理过程中有错误的所有行移到另一个dataframe中?

将处理过程中有错误的所有行移到另一个dataframe中?
EN

Stack Overflow用户
提问于 2018-10-02 15:21:06
回答 2查看 111关注 0票数 1

我使用以下命令将一些字符串转换为datetime:

代码语言:javascript
复制
polly_jun_jul_trans['Imp_Trans_Date'] = pd.to_datetime(polly_jun_jul_trans['Imp_Trans_Date'])
polly_jun_jul_trans['Imposition_Date_of_Hearing'] = pd.to_datetime(polly_jun_jul_trans['Imposition_Date_of_Hearing'])

但是,我的一些值中有错误,如:(‘未知字符串格式:’,'29/06n2018')。

将任何列中出现错误的所有行移动到另一个dataframe (我的意思是将产生第二个命令的错误行连接到第一个命令中的错误行)的最佳方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-02 15:26:13

首先,通过pd.Series.isnull找到麻烦行的联合。这意味着,如果两个datetime转换中的任何一个对一行失败,那么该行将给出False;否则为True

代码语言:javascript
复制
df['col1'] = pd.to_datetime(df['col1'], errors='coerce')
df['col2'] = pd.to_datetime(df['col2'], errors='coerce')

error_bool = df['col1'].isnull() | df['col2'].isnull()

然后使用布尔索引:

代码语言:javascript
复制
main = df[~error_bool].copy()
errors = df[error_bool].copy()

我使用了pd.DataFrame.copy来保证新的数据不再引用包含所有行的原始数据。

票数 1
EN

Stack Overflow用户

发布于 2018-10-02 15:24:16

关于您最初的问题,涉及如何删除引发错误的行。

您可以使用errors关键字pd.to_datetime(),如下所示:

错误:{“忽略”、“提高”、“胁迫”}、默认“提高” 如果“引发”,则如果“胁迫”,无效解析将引发异常,如果“忽略”,无效解析将设置为NaT,则无效解析将返回输入

您可以使用pd.to_datetime( ____, errors='coerce'),然后使用dropna()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52611451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档