我有客户和国家数据的df。我想数一数这些国家,这样就可以找到排名前五的国家,并将其用作其他地方的过滤器。
这给了我计数
countries = collections.Counter(responses_2021['country'].dropna())
这就产生了
[('US', 144), ('CA', 37), ('GB', 15), ('FR', 15), ('AU', 12)]
这给了我前五名
countries_top5 = countries.most_common(5)
现在我需要把它转换成一个更简单的结构,这样我就可以做我的过滤器了(这里我只是手动输入,因为这是我前进的唯一方式lol)
options = ['US', 'CA', 'GB', 'FR', 'AU']
rslt_df = df[df['country'].isin(options)]
所以,从这个
[('US',144),('CA',37),('GB',15),('FR',15),('AU',12)]
对这个
['US', 'CA', 'GB', 'FR', 'AU']
我一开始就试图删除计数
countries_top5_names = np.delete(countries_top5, 1, 1)
但这会带来收益
[['US'], ['CA'], ['GB'], ['FR'], ['AU']]
所以现在我想把它弄平,但我不知道怎么做。
更好的方法?
解决方案(感谢下面的@dan04)
countries_top5_names = [x[0] for x in countries_top5]
rslt_df = df[df['country'].isin(countries_top5_names)]