使用python从文本列中提取有意义的信息

使用python从文本列中提取有意义的信息,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我有一个有两列的表。我必须从笔记栏中提取有意义的信息。i、 e.我需要在一列中提取日期,在一列中提取日期后的信息,然后提取ID Notes, ID Movie Date 05-28-2018 Passed, 1010 MTD loan slip dated 8-10-14 the Issued, 1111 Max over date 10-2-15 and repaired, 11232 输出- Notes ID Date

我有一个有两列的表。我必须从笔记栏中提取有意义的信息。i、 e.我需要在一列中提取日期,在一列中提取日期后的信息,然后提取ID

Notes, ID
Movie Date 05-28-2018 Passed, 1010
MTD loan slip dated 8-10-14 the Issued, 1111
Max over date 10-2-15 and repaired, 11232
输出-

Notes                               ID      Date        Status
Movie Date 05-28-2018 Passed        1010    5/28/2018   Passed
loan slip dated 8-10-14 Issued      1111    8/10/2014   Issued
Max over date 10-2-15 and repaired  11232   10/2/2015   repaired
这是我的密码-

df = pd.read_sql('select * from <table>', engine)
searchfor = [' dated', ' date', ' Date', ' Dated']
df2 = df[df['Notes'] .str.contains('|'.join(searchfor), na = False)]
..................
df=pd.read\u sql('select*from',引擎)
searchfor=['日期','日期','日期','日期']
df2=df[df['Notes'].str.contains('|'.join(searchfor),na=False)]
..................

谢谢你在这方面的帮助。谢谢。

我想要一些循环


示例

import pandas as pd

df = pd.read_csv("data.csv")

searchforstatus = [' Passed', ' Issued', ' repaired']

for idx, row in df.iterrows():
    for c in searchforstatus:
        if c in row['Notes']:
            df.loc[idx, 'Status'] = c

结果

                                    Notes     ID     Status
0            Movie Date 05-28-2018 Passed   1010     Passed
1  MTD loan slip dated 8-10-14 the Issued   1111     Issued
2      Max over date 10-2-15 and repaired  11232   repaired

我使用的数据可以在这里找到:

从iterrows()获取行后的正则表达式也可以提取信息,如果可能的话

  s = 'Movie Date 05-28-2018 Passed'
  p = re.search(r'Dated?\s(\d+-\d+-\d+)\s([a-zA-Z]+)',s)

p、 组(1)将具有日期值,组(2)将具有“已通过”值。希望这有帮助。

期望的输出是什么?在上面的帖子中,“输出”作为我期望的输出。如果不清楚,请告诉我。对于2014年10月8日发布的MTD贷款单,这不适用于我是的。这可能是因为模式的设计方式。它在单词date中寻找一个“D”,但在本例中,它以一个小的“D”开头。该模式可以像重新搜索(r'D?D?ated?\s(\D+-\D+-\D+)\s([a-zA-Z]+.*),s)一样进行更改,它与小写或大写日期匹配,还捕获日期后字符串的其余部分。希望我说的很清楚,谢谢你的回复。它正在抛出一个错误-类型为“NoneType”的参数不可iterable。你能把完整的密码寄给我吗。代码对我来说很好用。我更新了我使用的数据的链接。我将它们保存在.csv文件中,并更新了我的答案,以显示如何加载它们