Панды выделяются как индикаторы двух информационных фреймов с условием - PullRequest
0 голосов
/ 10 сентября 2018

я бью блок здесь.Я должен перевести эту формулу Excel IF(COUNTIFS(advisor!$C:$C,$A2)=0,"0 disclosed", "Independent")

  if df.groupby('id').apply(lambda x: x['id'] == df_advisor['company_id']).count() == 0:
        df['auditor_compensation'] = '0 disclosed'
    else:
        df['auditor_compensation'] = 'Independent'

, пока это мое решение на python-pandas, которое я продолжаю получать KeyError: ('company_id', 'произошло с индексом 1')

Любая помощь будет очень признательна.

Редактировать

df Пример данных: данные компании

id      ticker       iq_id     company              auditor_compensation
48299   ENXTAM:AALB  IQ881736   Aalberts Industries       ?
48752   ENXTAM:ABN   IQ1090191  ABN AMRO Group            ?
48865   ENXTAM:ACCEL IQ4492981  Accell Group              ?
49226   ENXTAM:AGN   IQ247906   AEGON                     ?
49503   ENXTAM:AD    IQ373545   Koninklijke               ?

ниже df_advisor пример данных

id    type          company_id  advisor_company_id
1     auditor       48299       60911
17    auditor       48752       165120
6359  auditor       48865       73607
37    auditor       49226       81877
4415  compensation  49226       90258
53    auditor       49503       81877

Таким образом, цель состоит в том, чтобы проверить весь столбец company_id в df_advisor и подсчитать вхождение df['id'] для заполнения auditor_compensation столбец.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Использование numpy.where:

df['auditor_compensation'] = np.where(df['id'].isin(df_advisor['company_id']),
                                      '0 disclosed', 
                                      'Independent')
print (df)
      id        ticker      iq_id              company auditor_compensation
0  48299   ENXTAM:AALB   IQ881736  Aalberts Industries          0 disclosed
1  48752    ENXTAM:ABN  IQ1090191       ABN AMRO Group          0 disclosed
2  48865  ENXTAM:ACCEL  IQ4492981         Accell Group          0 disclosed
3  49226    ENXTAM:AGN   IQ247906                AEGON          0 disclosed
4  49503     ENXTAM:AD   IQ373545          Koninklijke          0 disclosed
0 голосов
/ 10 сентября 2018

Предполагая, что вы хотите знать, есть ли имя в столбце A в списке в столбце C вашего Excel.

df['Boolean'] = df['id'].isin(list(df_advisor['company_id'])
df['auditor_compensation'] = ''
df.loc[df['Boolean'] == False, 'auditor_compensation'] = '0 disclosed'
df.loc[df['Boolean'] == True, 'auditor_compensation'] = 'Independent'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...