2017-08-24 92 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] 感謝您的幫助。 –