所以我以前从未真正制作过自己的Regex表达式,我主要改编了我找到的表达式。由于我在python中找不到任何方法的想法,我想我应该试一试。
我使用.items()
将dict转换为pandas-df,以获得一列中的名称,另一列生成了以下内容:
地点 | 日期 |
---|---|
名称1 | 土壤N 2021-02-25 00:00:000 1。N-Rate 2021-03-12 |
名称2 | 土壤N 2021-02-25 00:00:000 1。N-Rate 2021-03-12 |
名称3 | 土壤N 2021-02-25 00:00:000 1。N-Rate 2021-03-09 |
名称4 | 土壤N 2021-02-25 00:00:000 1。N-Rate 2021-03-09 |
名称5 | 土壤N 2021-02-25 00:00:000 1。N-Rate 2021-03-12 |
名称6 | 土壤N 2021-02-25 00:00:000 1。N-Rate 2006-04-21 |
另一种替代
拆分并提取日期
place=['Name 1','Name 3']
Date=['Soil N 2021-02-25 00:00:000 1. N-Rate 2021-03-12',
'Soil N 2021-02-25 00:00:000 1. N-Rate 2021-03-09,']
df=pd.DataFrame(list(zip(place,Date)),columns=['place','Date'])
df['new']=df.Date.str.split('N-Rate').str[-1].str.extract(r'(d{4}-d{2}-d{1,2})')
思考可能出了什么问题,经过更多调整后,我认为我没有指定-应该与正则表达式中的数字分开
test['Date'].str.extract(r'(d{4}[-]d{2}[-]d{2})$', expand=True)
结果:
0 2021-03-12
1 2021-03-12
2 2021-03-09
3 2021-03-09
4 2021-03-12
5 2006-04-21
然后我刚刚添加到一个新的coltest['new_date] = test['Date'].str.extract(r'(d{4}[-]d{2}[-]d{2})$', expand=True)
编辑:如果不确定日期是1位还是2位,我只需添加一个逗号来指定或:
test['new_date] = test['Date'].str.extract(r'(d{4}[-]d{1,2}[-]d{1,2})$', expand=True)
我会注意到,我的例子比@balandongiv的更具限制性,因为字符串中的额外\w将产生一个NaN,因为我指定了$来显示它是字符串的末尾
您可以简单地尝试:
>>> df
Places Date
0 Name 1 Soil N 2021-02-25 00:00:000 1. N-Rate 2021-03-12
1 Name 2 Soil N 2021-02-25 00:00:000 1. N-Rate 2021-03-12
2 Name 3 Soil N 2021-02-25 00:00:000 1. N-Rate 2021-03-09
3 Name 4 Soil N 2021-02-25 00:00:000 1. N-Rate 2021-03-09
4 Name 5 Soil N 2021-02-25 00:00:000 1. N-Rate 2021-03-12
5 Name 6 Soil N 2021-02-25 00:00:000 1. N-Rate 2006-04-21
结果:
>>> df['Date'].str.split(" ", expand=True)[6]
0 2021-03-12
1 2021-03-12
2 2021-03-09
3 2021-03-09
4 2021-03-12
5 2006-04-21
Name: 6, dtype: object
除此之外,如果你正在寻找Date
,那么只使用下面的。
>>> df['Date'] = df['Date'].str.split(" ", expand=True)[6]
>>> df
Places Date
0 Name 1 2021-03-12
1 Name 2 2021-03-12
2 Name 3 2021-03-09
3 Name 4 2021-03-09
4 Name 5 2021-03-12
5 Name 6 2006-04-21