の他のすべての列に列を比較私は結果がすべての文字列カテゴリ値です特徴のシリーズのためにテストされている新しい科目を持ってシナリオを持っています。テストが完了したら、私はすべての被験者のマスターデータセットに新しいデータセットを比較し、与えられたスレッシュホールド(例えば90%)の類似点(マッチ)を探している必要があります。パンダ:データフレーム
したがって、新しいデータセットの新しいサブジェクトのそれぞれをマスターデータセットの各列に加えて、新しいデータセットの他の列と比較できるようにする必要があります。生産データセットには約50万カラム(および成長)および10,000ローがあるため、最高のパフォーマンスが得られます。ここで
は、いくつかのサンプルコードです:master = pd.DataFrame({'Characteristic':['C1', 'C2', 'C3'],
'S1':['AA','BB','AB'],
'S2':['AB','-','BB'],
'S3':['AA','AB','--']})
new = pd.DataFrame({'Characteristic':['C1', 'C2', 'C3'],
'S4':['AA','BB','AA'],
'S5':['AB','-','BB']})
new_master = pd.merge(master, new, on='Characteristic', how='inner')
def doComparison(comparison_df, new_columns, master_columns):
summary_dict = {}
row_cnt = comparison_df.shape[0]
for new_col_idx, new_col in enumerate(new_columns):
# don't compare the Characteristic column
if new_col != 'Characteristic':
print 'Evalating subject ' + new_col + ' for matches'
summary_dict[new_col] = []
new_data = comparison_df.ix[:, new_col]
for master_col_idx, master_col in enumerate(master_columns):
# don't compare same subject or Characteristic column
if new_col != master_col and master_col != 'Characteristic':
master_data = comparison_df.ix[:, master_col]
is_same = (new_data == master_data) & (new_data != '--') & (master_data != '--')
pct_same = sum(is_same) * 100/row_cnt
if pct_same > 90:
print ' Found potential match ' + master_col + ' ' + str(pct_same) + ' pct'
summary_dict[new_col].append({'match' : master_col, 'pct' : pct_same})
return summary_dict
result = doComparison(new_master, new.columns, master.columns)
この方法で動作しますが、私は効率性とパフォーマンスを向上したいと正確にどのように知りません。