如何在同一个数据框的另一列中查找包含唯一值的列值?
问题描述:
我有一个数据帧:如何在同一个数据框的另一列中查找包含唯一值的列值?
Id name value
0 1 aaa x
1 2 aaa y
2 3 aaa z
3 4 ddd t
4 5 ddd t
5 6 fff j
6 7 ggg m
7 8 ggg n
我想找到只有那些行,其名称重复,并为这些重复行的值不同。
预期输出:
Id name value
0 1 aaa x
1 2 aaa y
2 3 aaa z
3 7 ggg m
4 8 ggg n
我试图用groupby:
df.groupby('name')
是这个任务此GROUPBY功能有用?我如何才能实现我想要的?
答
这行代码将通过名称计值的数量:
df.groupby('name')['value'].transform(pd.Series.nunique)
Out[8]:
0 3
1 3
2 3
3 1
4 1
5 1
6 2
7 2
请注意,我的groupby
对象使用.transform(pd.Series.nunique)
而不是简单地.nunique()
。这样,结果将与原始数据帧长度相同,并且您可以直接使用它进行过滤:
df[df.groupby('name')['value'].transform(pd.Series.nunique) > 1]
Out[9]:
Id name value
0 1 aaa x
1 2 aaa y
2 3 aaa z
6 7 ggg m
7 8 ggg n
正确。谢谢。 – kit