计算熊猫行中值的外观

时间:2018-09-18 13:04:45

标签: python pandas loops count

嘿,我目前正在熊猫中的一列中进行迭代。 现在,我想处理一个值在该列中只出现一次的情况,而不是在它出现多次时的情况。 我尝试了几种方法,但是都没有用。 现在我得到了错误: 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 :(得分:1)

根据建议,使用Series.value_counts创建一个count == 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)]

[出]

    id  country
2   1   Indonesia
6   1   UK