Подсчет появления значения в ряду панд - PullRequest
0 голосов
/ 18 сентября 2018

Эй, я сейчас перебираю столбец в пандах.Теперь я хочу обработать случай, когда значение появляется только один раз в этом столбце, отличное от того, когда оно появляется несколько раз.Я пробовал несколько подходов, но ни один не работал.Прямо сейчас я получаю сообщение об ошибке: ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). Я просто пытаюсь сначала отфильтровать все строки с id i в df_path_counter, и тогда я считаю, что это строки в предложении if.Я не знаю, почему это не работает.Есть идеи?Это мой код:

df_path = pd.DataFrame([(1, 'Germany'),
               (1, 'France'),
               (1, 'Indonesia'),
               (1, 'France'),
               (2, 'France'),
               (1, 'Germany'),
               (1, 'UK'),
               ],
              columns=['id', 'country']
for i, g in df_path.groupby('id'):
    df_path_counter=df_path.loc[df_path['id'] == i]
    if(df_path_counter.count()<=1):
         #...do sth

1 Ответ

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

Как предложено, используйте Series.value_counts, чтобы создать список стран с количеством == 1, и используйте логическое индексирование с Series.isin для фильтрации:

country_counts = df_path['country'].value_counts()
country_1 = country_counts[country_counts.eq(1)].index

df_path[df_path['country'].isin(country_1)]

[out]

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