2016-11-14 4 views
0

Я пытаюсь найти значения строк в двух кадрах данных, и я использую библиотеку Pandas.Python: не удалось сравнить строки в dataframes

Первый dataframe - df_transactions имеет список кодов ошибок в колонке «ErrList»

Второй dataframe - df_action имеет список ошибок в одном столбце «CODE» и соответствующую ошибку в столбце «ДЕЙСТВИЕ ».

Я пытаюсь сравнить две строки из этих dataframes, как показано ниже:

ActionLookup_COL = [] 
ActionLookup = [] 
for index, transactions in df_transactions.iterrows(): 
     errorList = transactions['ErrList'] 
     for index, errorCode in df_action.iterrows(): 
      eCode = errorCode['Code'] 
      eAction = errorCode['Action'] 
      if eCode ==errorList: 
       ActionLookup.append(eAction) 

     ActionLookup_COL.append(ActionLookup) 

df_results['ActionLookup'] = pd.Series(shipmentActionLookup_COL, index=df_results.index) 

Когда я распечатать dataframe df_results [ «ActionLookup»], я не получаю код действия, соответствующий код ошибки. Пожалуйста, дайте мне знать, как я могу сравнить строки в этих информационных кадрах.

Спасибо за ваше время!

ответ

1

IIUC вам нужно merge:

pd.merge(df_transactions, df_action, left_on='ErrList', right_on='Code') 

Пример:

df_transactions = pd.DataFrame({'ErrList':['a','af','e','d'], 
           'col':[4,5,6,8]}) 

print (df_transactions) 
    ErrList col 
0  a 4 
1  af 5 
2  e 6 
3  d 8 

df_action = pd.DataFrame({'Code':['a','af','u','m'], 
          'Action':[1,2,3,4]}) 

print (df_action) 
    Action Code 
0  1 a 
1  2 af 
2  3 u 
3  4 m 

df_results = pd.merge(df_transactions, df_action, left_on='ErrList', right_on='Code') 
print (df_results) 
    ErrList col Action Code 
0  a 4  1 a 
1  af 5  2 af 

print (df_results['Action']) 
    ErrList col Action Code 
0  a 4  1 a 
1  af 5  2 af 
Смежные вопросы