Python 3.x 熊猫-查找每个类组中显示的唯一值
我的表格如下:Python 3.x 熊猫-查找每个类组中显示的唯一值,python-3.x,pandas,Python 3.x,Pandas,我的表格如下: class | id _____________________ A 12311894945 A 12311760566 A 12311433981 A 12299990440 A 12291758744 B 12311894945 B 12311760566 B 12311433981 B 12299990440
class | id
_____________________
A 12311894945
A 12311760566
A 12311433981
A 12299990440
A 12291758744
B 12311894945
B 12311760566
B 12311433981
B 12299990440
B 12291758744
C 12299990440
C 12291758744
[12299990440, 12291758744]
我希望获得属于每个类组的唯一id值,以便预期结果如下:
class | id
_____________________
A 12311894945
A 12311760566
A 12311433981
A 12299990440
A 12291758744
B 12311894945
B 12311760566
B 12311433981
B 12299990440
B 12291758744
C 12299990440
C 12291758744
[12299990440, 12291758744]
我想可能是一个groupby类和某种交叉点,但我看不出这两个操作是如何在Pandas中一起完成的。试试:
uniques = df.groupby('id')['class'].nunique()
uniques[uniques.eq(df['class'].nunique()) ].index
输出:
Int64Index([12291758744, 12299990440], dtype='int64', name='id')
使用集合交点和:
另一种选择是旋转:
s = pd.crosstab(df['id'],df['class']).astype(bool).all(1)
#s = df.pivot_table(index='id',columns='class',aggfunc=len).ge(1).all(1)
s[s].index
#Int64Index([12291758744, 12299990440], dtype='int64', name='id')
这是另一个选择:
uniques = df.groupby(['id','class']).size().unstack().fillna(0).astype(bool).all(axis=1)
uniques.loc[uniques].index.tolist()
或: