Panda在基于另一列python的一列中获得唯一值



这里有一个数据帧,如下所示:

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应用于该组合。

最新更新