我正在尝试编写与数据框中的列匹配的正则表达式。数据框中的所有列都是
cols = ['after_1', 'after_2', 'after_3', 'after_4', 'after_5', 'after_6',
'after_7', 'after_8', 'after_9', 'after_10', 'after_11', 'after_12',
'after_13', 'after_14', 'after_15', 'after_16', 'after_17', 'after_18',
'after_19', 'after_20', 'after_21', 'after_22', 'after_10_missing',
'after_11_missing', 'after_12_missing', 'after_13_missing',
'after_14_missing', 'after_15_missing', 'after_16_missing',
'after_17_missing', 'after_18_missing', 'after_19_missing',
'after_1_missing', 'after_20_missing', 'after_21_missing',
'after_22_missing', 'after_2_missing', 'after_3_missing',
'after_4_missing', 'after_5_missing', 'after_6_missing',
'after_7_missing', 'after_8_missing', 'after_9_missing']
我想选择字符串中所有值在1到14之间的列。
此代码有效
df.filter(regex = '^after_[1-9]$|after_([1-9]\D|1[0-4])').columns
但是我想知道如何在一行中制作它,而不是将它拆分成两行。第一部分选择所有以1到9之间的数字结尾的字符串(即'after_1'...'after_9'),而不选择与它们对应的“ missing”。第二部分(在|之后),选择以'after '开头且在1到9之间,后跟单词字符或以1开头,后跟0-4的任何字符串。>
有没有更好的方法来写这个?
我已经尝试过
df.filter(regex = 'after_([1-9]|1[0-4])').columns
但这会选择以1或2(即'after_20')开头的字符串