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