我是python的新手,1。我正在尝试应用正则表达式,甚至提取Pandas Dataframe Column的最后6位数(所有行)。
基本上我试图在pandas列中的第二个和第三个斜杠0000/00000/00/000之间提取值。
用于提取pandas数据框'data_extract'的最后6位数字,列名为'extract'的函数是data_extracted=data_extract.extract.str[:-4]
df.head()看起来像这样[![在此输入图像描述] [1]] [1]
我正在尝试提取最后6位数字并存储在新列中或提取第2和第3个斜杠之间的数字'/'并存储在pandas dataframe中的新列中。
根据Mohamed Thasin的建议,应用Lamba表达式[![在此处输入图像描述] [2]] [2]
因为df['Numbers'].apply(lambda x: x.split('/'))
通过在'/'的基础上进行拆分而在数组中产生。我如何获得阵列的第二个索引?
答案 0 :(得分:3)
这里的regex似乎能够在第2和第3斜杠之间得到任何东西。该链接包含我使用的所有语法的所有解释。
^(?:[^\/]*\/){2}([^\/]*)\/.*$
基本上,我使用了否定集来匹配除分隔符(/)之外的所有内容并捕获第二个和第三个分隔符之间的所有内容
希望它有所帮助:)
答案 1 :(得分:1)
试试这个,
df['Numbers'].apply(lambda x: x.split('/')[2]), This splits the Dataframe (all rows) for every occurrence of '/' and then takes the value between 2nd and 3rd '/'.
如果包含意外格式,
df['Numbers'].apply(lambda x: x.split('/')[2] if(len(x.split('/')))==4 else '')
这是为了进行健全性检查,如果在拆分后列表中没有包含4个元素,那么它不会抛出索引超出范围的错误,而是填充了'''一片空白。