Python处理DataFrame:如何计算[SOME_TEXT]长度以提取日期?
从DataFrame字符串列中动态提取日期的方法
直接提取日期(推荐)
不用纠结前置文本的长度,用正则表达式可以精准匹配目标日期格式,不管[SOME_TEXT]内容怎么变都能生效:
import pandas as pd # 提取第一个下划线后紧跟的DD/MM/YYYY格式日期 df['date'] = df['Column_with_date'].str.extract(r'_(\d{2}/\d{2}/\d{4})')[0]
正则表达式_(\d{2}/\d{2}/\d{4})会定位第一个下划线,然后捕获后面10位的日期格式,直接提取到新列中,即使字符串后续出现[或]也不会干扰结果。
计算[SOME_TEXT]长度的方法
如果一定要通过前置文本长度调整截取位置,用str.find('_')就能获取第一个下划线的索引值,这个值就是[SOME_TEXT]的长度(因为索引从0开始,下划线的位置正好对应前面字符的总数):
# 计算每条数据中[SOME_TEXT]的长度 df['prefix_length'] = df['Column_with_date'].str.find('_') # 根据长度截取日期部分 df['date'] = df.apply(lambda row: row['Column_with_date'][row['prefix_length']+1 : row['prefix_length']+11], axis=1)
这里row['prefix_length']+1是日期的起始位置,+11是结束位置(因为DD/MM/YYYY刚好占10个字符)。
内容的提问来源于stack exchange,提问作者Ellen Coggin
相关产品推荐
相关产品推荐

