如何从熊猫数据框中的字符串中提取最后一个日期

ajm_ecosse

我需要在熊猫数据框中的每一行的字符串中找到特定文本之前的最后日期。文本可以在字符串中日期之后的任何位置。

我有一个由两列组成的csv文件。第一个是参考编号(每行唯一),另一个是可以用逗号分隔的字符串。与此类似:

Ref No  Audit
abc123  "text1, text2, text3"
abc124  "text1, text2, text3"

参考编号是指数据库中的项目,审核是对项目所做的所有更改的审核。文本中每个逗号分隔的项目都是单个更改(例如,text1是更改,text2是更改等)。仅当在新日期上进行更改时,才在文本部分的开头附加日期。“审核”列中的每个项目如下所示:

“ 01/01/2019 09:15:12任务1已完成,任务2已完成,任务3已完成,02/01/2019 15:26:03任务4已完成,任务5已完成”。

我试图找到一种方法来识别特定的任务何时完成。在上面的示例中,如果我想知道任务5何时完成,那就是02/01/2019。

除了将数据放入熊猫数据框并将“审核”文本放入列表之外,我对如何执行此操作也一无所知。

import pandas as pd

audit = pd.read_csv('audit_export1.csv', encoding='latin1')

audit['Audit'].apply(pd.Series)
audit['Audit'] = audit['Audit'].str.split(',')

我希望得到一个包含2列的数据框;搜索的参考和更改日期。

很抱歉在我对问题的措辞上有任何错误或明显错误,我对python还是很陌生,所以非常感谢您能提供的任何帮助。我查看了先前提出的问题,但找不到任何能解决该问题的信息,但这可能是由于我缺乏知识而无法归纳指导。

编辑

27/03/2019 09:34:41 Jo​​hn Smith字段“ Handler”已从旧值“”更改为新值“ John Doe”,字段“ Workflow Status”已从旧值“ Awaiting分配”更改为新值“ With Handler”,27/03/2019 22:24:19 Jane Doe字段“ Handler”已从旧值“ Jane Doe”更改为新值“ Bill Smith”,10/04/2019 04:58 :43 Jill Smith字段“工作流状态”已从旧值“ With Handler”更改为新值“ Passed to Clearing Desk”,10/04/2019 06:31:09 Sam Jones字段“工作流状态”已被更改从旧值“ Passed to Clearing Desk”更改为新值“ QC”,13/04/2019 08:30:49 Dave Jones字段“ QC Handler”已从旧值“”更改为新值“ Dave Jones”,字段“工作流状态”已从旧值“ QC”更改为新值“ QC-With Handler”,13/04/2019 09:06: 36 Dave Jones字段“ Workflow Status”已从旧值“ QC-With Handler”更改为新值“ Passed back to re-work”,17/04/2019 23:52:11 Sally Smith字段“ Workflow Status” “已从旧值“传递回返工”更改为新值“ QC-传递到清算台”,18/04/2019 2:45:30 Bill Jones字段“工作流状态”已从旧值更改值“ QC-传递给清算台”更改为新值“投诉处理”已从旧值“ QC”更改为新值“ QC-有处理程序”,13/04/2019 09:06:36 Dave Jones字段“工作流状态”已从旧值“ QC-有处理程序”更改为新值“传回返工”,17/04/2019 23:52:11 Sally Smith字段“工作流状态”已从旧值“传回返工”更改为新值“ QC-通过到清算台”,18/04/2019 2:45:30 Bill Jones字段“工作流状态”已从旧值“ QC-传递到清算台”更改为新值“投诉处理”已从旧值“ QC”更改为新值“ QC-有处理程序”,13/04/2019 09:06:36 Dave Jones字段“工作流状态”已从旧值“ QC-有处理程序”更改为新值“传回返工”,17/04/2019 23:52:11 Sally Smith字段“工作流状态”已从旧值“传回返工”更改为新值“ QC-通过到清算台”,18/04/2019 2:45:30 Bill Jones字段“工作流状态”已从旧值“ QC-传递到清算台”更改为新值“投诉处理”QC-使用处理程序”更改为新值“传递回返工”,17/04/2019 23:52:11 Sally Smith字段“工作流状态”已从旧值“传递回返工”更改为新值“ QC-传递到清算台”,18/04/2019 2:45:30 Bill Jones字段“工作流状态”已从旧值“ QC-传递到清算台”更改为新值“投诉处理”QC-使用处理程序”更改为新值“传递回返工”,17/04/2019 23:52:11 Sally Smith字段“工作流状态”已从旧值“传递回返工”更改为新值“ QC-传递到清算台”,18/04/2019 2:45:30 Bill Jones字段“工作流状态”已从旧值“ QC-传递到清算台”更改为新值“投诉处理”投诉处理”投诉处理”

编辑2

import pandas as pd
import re
a = pd.read_csv('audit_export1.csv')
to_find = "Workflow Status"

for cases in a:
    date_list = re.findall(r'\d+/\d+/\d+ \d+:\d+:\d+ ', a['Audit Trail'])

    s = re.split(r'\d+/\d+/\d+ \d+:\d+:\d+ ', a['Audit Trail'])
    task_list = [i for i in s if i != '']

    for  i, item in enumerate(task_list):
        if to_find in item:
            a['Audit Date'] = date_list[i]

编辑3

import pandas as pd
from datetime import datetime

to_find = 'Workflow'
a = pd.read_csv('audit_export2.csv')

a.Audit = a.Audit.str.split(',')

overall_list = []
for tmplist in a.Audit:
    dl = []
    for i in tmplist:
        i = i.strip()
        try: 
            sdate = datetime.strptime(i[:10],'%d/%m/%Y')
            dl.append(str(sdate) + i[10:])
        except ValueError: # if its NOT a date, adding the date got from the try block to the string
            dl.append(str(sdate) + i)
        dl = dl[::-1]
    overall_list.append(dl)

a['Audit_date'] = pd.Series(overall_list)
纳文

严格在您感兴趣的日期位于第一部分的前提下,并且每一行的第一行文本中始终会有一个日期,将产生以下代码

import pandas as pd
from datetime import datetime

a = pd.read_csv('audit_export1.csv')

a.Audit = a.Audit.str.split(',')

overall_list = []
for tmplist in a.Audit:
    dl = []
    for i in tmplist:
        i = i.strip()
        try: 
            sdate = datetime.strptime(i[:19],'%d/%m/%Y %H:%M:%S')
            dl.append(str(sdate) + i[19:])
        except ValueError: # if its NOT a date, adding the date got from the try block to the string
            dl.append(str(sdate) + i)
    overall_list.append(dl)

a['Audit_date'] = pd.Series(overall_list)

我试图在没有日期的字符串中复制日期部分,并创建一个新列,并将日期插入到字符串的前面。您可以根据需要使用结果列表。例如输出如下

print(a.Audit_date[0])

['2019-01-01 09:15:12 task 1 completed',
 '2019-01-01 09:15:12task 2 completed',
 '2019-01-01 09:15:12task 3 completed',
 '2019-01-02 15:26:03 task 4 completed',
 '2019-01-02 15:26:03task 5 completed']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从数据框中的字符串中提取第一个日期

从字符串中提取字词的最后一个作为熊猫中的新列

如何从数据框中的列中提取字符串模式,并创建一个包含提取的字符串的新数据框列?

从字符串熊猫数据框中提取日期

如何从存储在python数据框中的模式的字符串中提取第一个数字?

从熊猫数据框中仅提取一个字符串元素

如何从熊猫数据框的列中提取最后一个单词

从Excel VBA中的字符串中提取最后一个括号内的字符

如何从Python中的熊猫数据框中的列中提取关键字(字符串)

如何从一个数据框中的字符中提取字符串并将其放入新表中

如何从熊猫数据框中的可变长度列中提取子字符串?

如何从字符串中提取或测试最后一个字段?

在 R 中提取字符串中的最后一个单词 - 面临错误

从数据框中的最后一个可用日期中提取最近30天的数据框

从字符串中提取子字符串的最后一个实例

熊猫:根据从旧数据框中的字符串中提取的数据创建新的数据框

如何从字符串中提取第一个和最后一个单词?

要从最后一个ID中提取一个子字符串

从熊猫数据框中提取具有所需前缀的句子中的最后一个单词

如何替换数据框列中特定字符串的最后一个字符?

熊猫:如何从另一个字符串中提取一个字符串

如何从一列中提取字符串并将其保存在熊猫数据框中的新列中?

根据Python中的一个条件提取字符串数据框中的数字

如何从ANT中的:分隔的字符串中提取第一个元素

如何从VBA(Excel)中的字符串中提取第一个单词?

如何从python中的字符串中提取第一个浮点数

如何在熊猫数据框中搜索字符串并与另一个匹配?

如何将熊猫数据框中的字符串设置为另一个值

如何在熊猫数据框中将字节中的“一个热编码”列名解码为字符串