对大熊猫中的列进行不区分大小写的正则表达式

问题描述 投票:3回答:1

我正在尝试使用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)

任何帮助将不胜感激

csv python-3.x pandas
1个回答
4
投票

如果我了解您的要求,则可以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

编辑

用于仅匹配名称而没有单词的名称,因此匹配'Test'而不匹配'My Test':

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的开头寻找'Test',$标记了要搜索的模式的结尾,有一个方便的cheat sheet

© www.soinside.com 2019 - 2024. All rights reserved.