Непонятная KeyError при использовании groupBy даже при наличии ключа - PullRequest
0 голосов
/ 26 февраля 2020

Я читаю CSV из файла, создаю trucksAvl df, затем объединяю его с существующим truckMstr df и, наконец, делаю groupby в результирующем столбце.

path=os.getcwd()+'/inputfiles/'+session.get('truckAvlFile')
        trucksAvl=pd.read_csv(path)
        #truck avl list has no detailsm, get from truck mstr
        trucksAvl=trucksAvl.merge(truckMstr.drop_duplicates('Type',keep='last'),on='Type',how='left')
        #both has same name, rename old
        trucksAvl.rename(columns={'Destination_x':'Destination'},inplace=True)
        groupTA=trucksAvl.groupby(('Destination','Type','truckWt','truckVol','Density')).agg({'Count':sum})
        groupTA['Used']=0

Это отлично работал на моей Ma c с Python 3.6.9

Но когда я переместил код в Ubuntu, он продолжал падать с ошибкой ключа

1 Ответ

0 голосов
/ 26 февраля 2020

Я попробовал следующее:

  1. Печать имен столбцов
  2. Укажите путь выхода, если пропущено какое-либо из необходимых имен столбцов.
  3. Добавить параметр кодирования к файлу, который я читал
        path=os.getcwd()+'/inputfiles/'+session.get('truckAvlFile')
        trucksAvl=pd.read_csv(path,encoding='utf-8-sig')
        #truck avl list has no detailsm, get from truck mstr
        trucksAvl=trucksAvl.merge(truckMstr.drop_duplicates('Type',keep='last')[['Type', 'truckWt', 'truckVol','Density','Destination']], on='Type',how='left')
        #both has same name, rename old
        trucksAvl.rename(columns={'Destination_x':'Destination'},inplace=True)
        print(truckMstr.columns, 'from  Debug to ', trucksAvl.columns)
        if ('truckWt' in trucksAvl.columns):
            if ('truckVol' in trucksAvl.columns):

Окончательным исправлением было изменение группы по скобкам с ((.....)) на ([....])!
Почему Ма c разрешить это, а не Ubuntu? Понятия не имею

groupTA=trucksAvl.groupby(('Destination','Type','truckWt','truckVol','Density')).agg({'Count':sum})
        groupTA['Used']=0
        groupTA.reset_index(level=groupTA.index.names,inplace=True)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...