Как создать новые столбцы в кадре данных, используя лямбда-выражения? - PullRequest
0 голосов
/ 10 мая 2018

Я хотел бы создать 3 новых столбца в этом кадре данных:

columnList = { 'hasCampaign': ( lambda x: x[ 'CAMPAIGNID' ] != '' ), 
               'hasLeadType': ( lambda x: x[ 'LEADTYPE' ] != '' ),
               'hasEvent': ( lambda x: x[ 'EVENT' ] != '' ) }
for ( k, v ) in columnList.items():
    df = df.assign( k = v )

Разве это не должно работать?Я получаю эту ошибку:

KeyError: 'CAMPAIGNID'

Я проверил, и столбец CAMPAIGNID существует.

KeyError                                  Traceback (most recent call last)
/usr/local/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2524             try:
-> 2525                 return self._engine.get_loc(key)
   2526             except KeyError:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

Как мне назначить эти 3 лямбды для вычисления этих новых 3 столбцов?

1 Ответ

0 голосов
/ 10 мая 2018

Для меня работает пропустить цикл и использовать:

df = df.assign( **columnList )

для избежания KeyError s возможно преобразовать столбцы в список, возможно, возникла некоторая проблема с вычислением весовых пространств:

print (df.columns.tolist())

и для удаления пробелов в именах столбцов используйте:

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