итерации и условия в питон пандах - PullRequest
0 голосов
/ 26 ноября 2018
shipportMD=pd.read_csv('shipportMD.csv')

for importName in shipportMD['importName'].unique():
    if (len(shipportMD['ItemDecision']=='Accepted')>len(shipportMD['ItemDecision']=='Rejected')):
        print (shipportMD['importName'])

Мне нужно напечатать importName значения, где 'Accepted' значений больше, чем 'Rejected' для ItemDecision.

Так, например:

importName : x, y, x, x

ItemDecision : отклонено, принято, отклонено, принято.

Итак, x имеет 2 отклонено и одинПринимается.

1 Ответ

0 голосов
/ 26 ноября 2018

Вы можете использовать pd.crosstab, а затем логическую маску:

df = pd.DataFrame({'ID': [1, 1, 1, 1, 2, 2, 2, 2],
                   'Decision': ['Accepted', 'Rejected', 'Rejected', 'Rejected',
                                'Accepted', 'Accepted', 'Rejected', 'Accepted']})

df_ct = pd.crosstab(df['ID'], df['Decision'])

condition = df_ct['Accepted'] > df_ct['Rejected']

res = df_ct[condition].index  
# Int64Index([2], dtype='int64', name='ID')

или выполнить вычисление по вашему выбору по кросс-табличным результатам:

print(df_ct)

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