2017-08-24 93 views
1

我有一个数据帧和一个行选择函数。熊猫数据帧列的大小写不敏感匹配

import pandas as pd 
df = pd.DataFrame({'A':[1,2,3],'B':[5,6,7]}) 
def select_f(row): 
    return row['a'] 

的问题是,我不希望更改列名(大写保持),然后进行以下功能运行

for _, row in df.iterrows: 
    if select_f(row) >2: 
     print row['B'] 

回答

1

你可以使用df.filter用正则表达式:

In [246]: df.filter(regex=re.compile('^a$', re.I)) 
Out[246]: 
    A 
0 1 
1 2 
2 3 

为了您的目的,您将使用:

def select_f(row): 
    return row.filter(regex=re.compile('^a$', re.I)).iloc[0] 
+0

感谢您的快速回答,虽然不是真正的工作,但我想返回最后一行。您的代码仍然打印所有行 –

+0

@KEXINWANG您必须将该行传递给该函数。 –

+0

这个工作对我来说: 高清select_f(行): 回报row.filter(正则表达式= re.compile( '^ $一个',如re.I))值[0] 感谢您的帮助。 –