使用pandas查找另一列唯一出现的列数
我有一张桌子:使用pandas查找另一列唯一出现的列数,pandas,Pandas,我有一张桌子: id_1 id_2 id_3 47452 IN 13 47452 IN 13 47452 IN 16 31551 GA 6 31551 GA 6 如何找到具有多个唯一出现(id\u 2和id\u 3)==1的id\u 1?(使用熊猫) 因此,此处仅应返回31551 代码: 我们可以通过在id\u 1上使用groupby来解决这
id_1 id_2 id_3
47452 IN 13
47452 IN 13
47452 IN 16
31551 GA 6
31551 GA 6
如何找到具有多个唯一出现(id\u 2
和id\u 3
)==1的id\u 1
?(使用熊猫
)
因此,此处仅应返回31551
代码:
我们可以通过在
id\u 1
上使用groupby来解决这个问题,然后根据id\u 2
和id\u 3
获得每个组的唯一行数
最后,我们可以筛选出具有一个唯一行的组:
m = df.groupby('id_1')['id_2','id_3'].transform('nunique').eq(1).all(axis=1)
df[m]
输出
id_1 id_2 id_3
3 31551 GA 6
4 31551 GA 6
array([31551])
如果要返回
id_1
的值:
df[m]['id_1'].unique()
输出
id_1 id_2 id_3
3 31551 GA 6
4 31551 GA 6
array([31551])
我们可以通过在
id\u 1
上使用groupby来解决这个问题,然后根据id\u 2
和id\u 3
获得每个组的唯一行数
最后,我们可以筛选出具有一个唯一行的组:
m = df.groupby('id_1')['id_2','id_3'].transform('nunique').eq(1).all(axis=1)
df[m]
输出
id_1 id_2 id_3
3 31551 GA 6
4 31551 GA 6
array([31551])
如果要返回
id_1
的值:
df[m]['id_1'].unique()
输出
id_1 id_2 id_3
3 31551 GA 6
4 31551 GA 6
array([31551])
您的问题的解决方案之一可以通过使用多层次分组来实现
d = {'id_1': [47452, 47452, 47452, 31551, 31551], 'id_2': ['IN', 'IN', 'IN', 'GA', 'GA'], 'id_3': [13, 13, 16, 6, 6]}
df = pd.DataFrame(data=d)
result = df.groupby(['id_1','id_2','id_3']).size().groupby(level=0).agg(['size'])
result:
size
id_1
31551 1
47452 2
您可以通过以下方式选择只有一个计数的id_1:
result[result['size']==1]
size
id_1
31551 1
此外,您还可以打印结果中所有id的列表:
result[result['size']==1].index.tolist()
output : [31551]
希望这能有所帮助。通过使用多层次分组,您的问题可以得到一个解决方案
d = {'id_1': [47452, 47452, 47452, 31551, 31551], 'id_2': ['IN', 'IN', 'IN', 'GA', 'GA'], 'id_3': [13, 13, 16, 6, 6]}
df = pd.DataFrame(data=d)
result = df.groupby(['id_1','id_2','id_3']).size().groupby(level=0).agg(['size'])
result:
size
id_1
31551 1
47452 2
您可以通过以下方式选择只有一个计数的id_1:
result[result['size']==1]
size
id_1
31551 1
此外,您还可以打印结果中所有id的列表:
result[result['size']==1].index.tolist()
output : [31551]
希望这有帮助