正则表达式的有序/优先级返回

时间:2016-10-13 14:59:10

标签: python regex pandas

我有一组可能出现在DataFrame字段中的可能值(从数据库中提取):

(N2 | N1 | N11 | N12 | N3 | N4 | N6 | N10 | N13 | N5 | N7 | N8 | N9)

该字段可以包含任何上述任意组合,例如:

" N1,N6,N9"

我想从字段的每个元素中提取具有最高"等级"意思是N9> N8> N7> N5 ......根据我上面的组的顺序。

因此,从示例中它将返回" N9"。对于" N1,N3,N11和#34;它将返回" N3"。

RegEx可以实现吗?我正在使用Python / Pandas。

提前多多感谢!

1 个答案:

答案 0 :(得分:1)

考虑到您的数据框df包含名为data的数据列,这是一种不使用正则表达式的简单方法。将字符串拆分为列,然后对结果列表进行排序并获取第一个元素:

df.data.str.split(',').apply(lambda l: sorted(l, reverse=True)[0])
Out[7]: 
0    N9
1    N3
Name: data, dtype: object