【问题标题】:Two time stamp string in single row to convert datetime单行中的两个时间戳字符串以转换日期时间
【发布时间】:2019-09-30 05:31:50
【问题描述】:

csv包含一些列值低于时间戳字符串类型,如何将其转换为pandas中最近日期的日期时间...

2019-09-27 09:15:422019-09-28 14:55:182019-09-26 04:54:12 

case[date]=case[date].apply(lambda x: pd.to_datetime(x,errors = 'coerce',infer_datetime_format=True))

但执行时出现以下错误

('offset must be a timedelta strictly between -timedelta(hours=24) and timedelta(hours=24).', 'occurred at index Preauth Pending Date')

【问题讨论】:

  • 这些日期时间在一行中,在一年之前没有空格2019 ?
  • 是的..请编写代码将日期时间类型转换为最近日期
  • 总有2019年?
  • 不,可能还有 2018 年或上一年..
  • rest 列转换为日期时间格式,但是两个或三个时间戳会引发错误...我读取每个字符串的第 10 个字符,然后转换为日期时间格式,但我需要更简单的方法...

标签: python pandas dataframe timestamp


【解决方案1】:

试试这个:

df = pd.DataFrame({'date':['2019-09-27 09:15:422019-09-28 14:55:182019-09-26 04:54:12']})
df['date']=df['date'].apply(lambda x : max([pd.to_datetime(x[i:i+19]) for i in range(0,len(x),19)]))
df['date']

我假设在选择最近的日期之前,您的日期格式不会在此处更改为使用字符串的大小来拆分它。

【讨论】:

  • 当我将上述代码更改为所有日期类型列时,它会逐月更改或逐月更改,这是混合类型..
  • 我的所有列字典是
  • {'状态更新日期': ['27/09/2019 09:06:12 AM', '03/09/2019 02:29:43 PM', '25/09/2019 09:13:45 AM', '23/09/2019 01:55:44 PM', '24/09/2019 11:00:06 AM'], 'IP 注册日期': ['03/09/2019 04:50:55 PM', nan, '11/09/2019 01:28:23 PM', '20/09/2019 11:54:32 AM', nan], 'Claim Pending Date': ['2019 -09-26 15:51:492019-09-16 09:40:06', nan, '2019-09-24 11:59:33', nan, nan], '要求等待更新日期': ['2019 -09-27 09:06:122019-09-16 09:49:34',南,'2019-09-25 09:13:45',南,南]}
  • 我不确定你的问题
  • 上面发送的是dict文件,其中两种类型的列首先是简单的字符串类型,其中一个时间戳和第二个是多个时间戳,我从中选择最大一个时间戳并将其转换为日期时间格式..但之后转换存在一些地方日转换月和月转换日的问题。
【解决方案2】:

想法是在- 之前为长度为4 的整数添加,,以便可能被, 分割,转换为日期时间并获得max 值:

df = pd.DataFrame({'date':['2019-09-27 09:15:422019-09-28 14:55:182019-09-26 04:54:12',
                           '2018-09-27 09:15:422018-09-28 14:55:182020-09-26 04:54:12']})
#print (df)

f = lambda x: pd.to_datetime(x, errors = 'coerce',infer_datetime_format=True)
df['last'] = (df['date'].str.replace(r'(\d{4}-)', r',\1')
                        .str.split(',', expand=True)
                        .apply(f)
                        .max(axis=1))
print (df)
                                                date                last
0  2019-09-27 09:15:422019-09-28 14:55:182019-09-... 2019-09-28 14:55:18
1  2018-09-27 09:15:422018-09-28 14:55:182020-09-... 2020-09-26 04:54:12

编辑:

d = {'Preauth Pending Date': [nan, nan, nan, '2019-09-21 05:34:06', nan],
 'Preauth Pending Updated Date': [nan, nan, nan, '2019-09-23 10:29:05', nan],
 'Claim Pending Date': ['2019-09-26 15:51:492019-09-16 09:40:06', nan,'2019-09-24 11:59:33', nan, nan],
 'Claim Pending Updated Date': ['2019-09-27 09:06:122019-09-16 09:49:34', nan, '2019-09-25 09:13:45', nan, nan]}


df = pd.DataFrame(d)
#print (df)

for c in df.columns:
    f = lambda x: pd.to_datetime(x, errors = 'coerce',infer_datetime_format=True)
    df[c] = (df[c].str.replace(r'(\d{4}-)', r',\1')
                                .str.split(',', expand=True)
                                .apply(f)
                                 .max(axis=1))
print (df)

  Preauth Pending Date Preauth Pending Updated Date  Claim Pending Date  \
0                  NaT                          NaT 2019-09-26 15:51:49   
1                  NaT                          NaT                 NaT   
2                  NaT                          NaT 2019-09-24 11:59:33   
3  2019-09-21 05:34:06          2019-09-23 10:29:05                 NaT   
4                  NaT                          NaT                 NaT   

  Claim Pending Updated Date  
0        2019-09-27 09:06:12  
1                        NaT  
2        2019-09-25 09:13:45  
3                        NaT  
4                        NaT  

【讨论】:

  • 出现错误消息“必须仅通过布尔值传递 DataFrame”
  • print (df['date'].str.replace(r'(\d{4}-)', r',\1')) 工作怎么样?
  • 'DataFrame' 对象没有属性 'str'
  • @Inder - print (df.head().to_dict('l')) 是什么?
  • dict 的结果......{'Preauth Pending Date': [nan, nan, nan, '2019-09-21 05:34:06', nan], 'Preauth Pending更新日期': [nan, nan, nan, '2019-09-23 10:29:05', nan], 'Claim Pending Date': ['2019-09-26 15:51:492019-09-16 09 :40:06', nan, '2019-09-24 11:59:33', nan, nan], '要求等待更新日期': ['2019-09-27 09:06:122019-09-16 09 :49:34', 南, '2019-09-25 09:13:45', 南, 南]}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 2019-07-30
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多