我正在尝试使用Python匹配python中的csv文件中的字符串(列),但它与任何内容都不匹配。我希望字符串匹配不区分大小写。我很新,但这是我试图做的事情
test = pd.read_csv("data.csv")
mytest= pd.DataFrame(test, columns=[re.search("[a-zA-Z1-9_]", "columnname1", re.IGNORECASE),])
print(mytest)
任何帮助都将受到高度赞赏
答案 0 :(得分:2)
如果我理解了你的意思,你可以filter
你的df只返回名称匹配的列并使其不区分大小写:
In [298]:
df = pd.DataFrame({'columnname1':np.arange(5), 'ColumnName1':np.arange(5), 'columnname2':0, 'column name 1':0})
df
Out[298]:
ColumnName1 column name 1 columnname1 columnname2
0 0 0 0 0
1 1 0 1 0
2 2 0 2 0
3 3 0 3 0
4 4 0 4 0
In [299]:
import re
df.filter(regex=re.compile("columnname1", re.IGNORECASE))
Out[299]:
ColumnName1 columnname1
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4
修改强>
为了匹配名称之前没有单词的名称,所以匹配'测试'但不是我的测试':
In [52]:
df = pd.DataFrame({'Test':np.arange(5), 'ColumnName1':np.arange(5), 'My Test':0, 'My column name 1':0})
import re
df.filter(regex=re.compile(r"^Test$", re.IGNORECASE))
Out[52]:
Test
0 0
1 1
2 2
3 3
4 4
所以^
寻找'测试'在str的开头,$
标记要搜索的模式的结尾,有一个方便的cheat sheet。