Pandas 根据另一列获取一列中的唯一值 python
Pandas get unique values in one column based off of another column 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)
但这只是返回一团糟。不知道该怎么做,感谢帮助。
您需要编写一个组合两列的表达式,并将unique
应用于组合。
可以使用SeriesGroupBy.unique()
together with .explode()
and .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)
这里我有一个如下所示的数据框:
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)
但这只是返回一团糟。不知道该怎么做,感谢帮助。
您需要编写一个组合两列的表达式,并将unique
应用于组合。
可以使用SeriesGroupBy.unique()
together with .explode()
and .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)