我是python
数据集上学习机器学习的新手,我试图在下面的数据框上执行以下操作(仅显示一个片段)
<表类>
id
国家
设备
标签
tbody><<tr>100 sg 三星 0 100 ch galaxy s 0 200 ab pocophone 1 200 ee iphone 1 1 200 我的 iphone 2 1 表类>
可以使用
df.loc[ df['label'] == 1 ] ['country']
这将找到df['label']为1的索引,loc
删除它们,并从中取'country'
系列。
尝试通过loc访问器和布尔屏蔽:
count=df.loc[df['label'].eq(1),['id','country']].value_counts()
#count the values of country where 'label' is 1
lst=count.index.get_level_values(1).unique().tolist()
#get the index of count for country names
lst
输出:
['ab', 'ee', 'my']
count
输出:
id country
200 ab 1
ee 1
my 1
dtype: int64
如果我理解正确的话:
- 独特的国家标签= 1
>>> df.query('label == 1')['country'].unique()
array(['ab', 'ee', 'my'], dtype=object)
- 当label = 1时,每个id的唯一国家计数
>>> df.query('label == 1').groupby('id')['country'].nunique()
id
200 3
Name: country, dtype: int64
- 更新版本:
countries = df.query('label == 1')['country'].unique()
df.query('country in @countries').groupby('id')['country'].nunique()