这里有一个数据帧,如下所示:
Variable Groups
1 [0-10]
1 [0-10]
2 [0-10]
2 [0-10]
3 [0-10]
3 [10-20]
4 [10-20]
4 [10-20]
5 [10-20]
5 [10-20]
我只想获得Variable
列的唯一值,但不想丢失不同Groups
中的任何重复值,例如:
Variable Groups
1 [0-10]
2 [0-10]
3 [0-10]
3 [10-20]
4 [10-20]
5 [10-20]
注意,仍然有一个重复的3,因为每组都有一个。我试过
df_unique = df['Groups'].groupby(df['Variable']).unique().apply(pd.Series)
但这只是一场彻头彻尾的混乱。不知道该怎么办,很感激帮助。
您可以将SeriesGroupBy.unique()
与.explode()
和.reset_index()
一起使用,如下所示:
df.groupby('Variable')['Groups'].unique().explode().reset_index()
另一种解决方案是使用GroupBy.first()
,如下所示:
df.groupby(['Variable', 'Groups'], as_index=False).first()
结果:
Variable Groups
0 1 [0-10]
1 2 [0-10]
2 3 [0-10]
3 3 [10-20]
4 4 [10-20]
5 5 [10-20]
这里有另一个选项:
df.groupby(['variable',df['groups'].explode()]).head(1)
您需要编写一个组合这两列的表达式,并将unique
应用于该组合。