2017-09-01 4 views
0

2つのテーブルをマージして作成されたデータフレームがあります。各行について、特定の列から値を選択し、リスト内で名前が指定された他の列と一致させる必要があります。パンダの大きなデータセットの1つの列の値を他の列と比較する方法

def segmentMatch(str1,str2): 
if(str1==str2): 
    return 1 
else: 
    return 0 

Cols=['Col1','Col2','Col3','Col4','Col5'.....,'Col20'] 
for li in Cols: 
    #print li 
    if (df.apply(lambda x: segmentMatch(x['Column_to_be_match'], x.li), axis=1)): 
     print "Matched" 

それは私ものx [李]を試みるが、私のために動作しませんでした次のエラーに

AttributeError: ("'Series' object has no attribute 'li'", u'occurred at index 0', u'occurred at index 0') 

を示しています。

答えて

1

これはColの各要素のためにあなたが列全体がこれは真理値のデータフレームを返します'Column_to_be_match'

df[Cols].apply(pd.Series.equals, other=df['Column_to_be_match']) 

に等しいかどうかに真理値を取得しますシリーズを返します。 'Column_to_be_match'をすべての列に比較します。Col

df[Cols].eq(df['Column_to_be_match'], 0) 
関連する問題