gpt4 book ai didi

python - pandas如何忽略无法转换为日期时间以计算时间增量的列单元格

转载 作者:行者123 更新时间:2023-12-01 07:42:06 25 4
gpt4 key购买 nike

我有一个df

doc_date    date_string
2019-06-03 WW0306
2019-06-07 EH0706
2019-08-08 19685
2019-08-09 258
2019-08-10 441573556

doc_datedateimte64 dtype,date_stringstring,删除非数字字符,

s = df['date_string'].str.replace(r'\D+', '')

doc_date date_string
2019-06-03 0306
2019-06-07 0706
2019-08-08 19685
2019-08-09 258
2019-08-10 441573556

s1 = to_datetime(s, errors='ignore', format='%d%m')

doc_date date_string
2019-06-03 1900-06-03
2019-06-07 1900-06-07
2019-08-08 19685
2019-08-09 258
2019-08-10 441573556

这里我想知道如何忽略那些 date_string 无法转换为日期时间的行;所以我可以创建一个 bool 掩码,

 c1 = (df.doc_date.dt.dayofyear - s1.dt.dayofyear).abs().le(180)

另一件事是如何使 c1 与任何无法转换为 datetime<的 date_strings 长度相同 将在 c1 中得到 False

最佳答案

使用 errors='coerce' 将不匹配的模式值转换为 NaT 以使用类似日期时间的函数:

s1 = to_datetime(s, errors='coerce', format='%d%m')

或更常见的用途(pandas 0.24.2,因此不同的输出):

import pandas as pd

s1 = pd.to_datetime(s, errors='coerce', format='%d%m')
print (s1)
0 1900-06-03
1 1900-06-07
2 NaT
3 1900-08-25
4 NaT
Name: date_string, dtype: datetime64[ns]

一起:

#if necessary
#df['doc_date'] = pd.to_datetime(df['doc_date'])

s = df['date_string'].str.replace(r'\D+', '')

s1 = pd.to_datetime(s, errors='coerce', format='%d%m')

c1 = (df.doc_date.dt.dayofyear - s1.dt.dayofyear).abs().le(180)
print (c1)
0 True
1 True
2 False
3 True
4 False
dtype: bool

关于python - pandas如何忽略无法转换为日期时间以计算时间增量的列单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56647245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com