Python:无法比较数据帧中的字符串

时间:2016-11-14 07:33:04

标签: python string pandas dataframe

我正在尝试在两个数据帧中查找字符串值,而我正在使用Pandas库。

第一个数据框 - df_transactions在“ErrList”列中有一个错误代码列表

第二个数据帧--df_action在一行'CODE'中有一个错误列表,在'ACTION'列中有相应的错误。

我正在尝试比较这些数据帧中的两个字符串,如下所示:

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)

当我打印数据帧df_results ['ActionLookup']时,我没有得到与错误代码对应的动作代码。请告诉我如何比较这些数据框中的字符串

谢谢你的时间!

1 个答案:

答案 0 :(得分: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