首页 > 解决方案 > Pandas - 从行中提取文本

问题描述

假设我有一个如下所示的数据框:

df2 = pd.DataFrame(['Apple, 10/01/2016, 31/10/18, david/kate', 'orange', 'pear', 'Apple', '10/01/2016', '02/20/2017'], columns=['A'])

>>> df2

                                         A       file_name
0  Apple, 10/01/2016, 31/10/18, david/kate          a.txt
1                                   orange          a.txt
2                                     pear          b.txt
3                                    Apple          a.txt
4                               10/01/2016          d.txt
5                               02/20/2017          e.txt

我想要的是仅提取此数据框中的日期,因此输出将如下所示:

                        A        file_name
0    10/01/2016, 31/10/18           a.txt
1    Nothing to return              a.txt
2    Nothing to return              b.txt
3    Nothing to return              a.txt
4    10/01/2016                     d.txt
5    02/20/2017                     e.txt

有人对如何做到这一点有任何建议吗?我不知道从哪里开始。

编辑#1:

我编辑了我的原始数据框和输出结果,以更好地反映我正在寻找的内容。

标签: pythonpython-3.xpandas

解决方案


与您想要的输出不完全匹配,但这种结构可能更好,并且可以轻松转换为您想要的。

基本上这是正则表达式的工作。此代码应该找到任何形式的数字/数字/数字:

s = df2["A"]
result = s.str.extractall(r"(\d+/\d+/\d+)")[0]
print(result)

>>>    match
    0  0        10/01/2016
       1          31/10/18
    4  0        10/01/2016
    5  0        02/20/2017

推荐阅读