Pandas dataframe 获取列的唯一值

Pandas dataframe get unique value of a column

我正在尝试获取每个站点的唯一可用值。原始 pandas 数据框包含三列:

站点 可用 容量
一个 7 20
一个 7 20
一个 8 20
B 15 35
B 15 35
C 12 25
C 12 25
C 11 25

并且我想获得每个站点的唯一可用信息。所需的 table 如下所示:

站点 唯一可用
一个 7
8
B 15
C 12
11

您可以使用 GroupBy.unique()

获取每个站点的唯一可用列表
>>> df.groupby('Site')['Available'].unique()
Site
A      [7, 8]
B        [15]
C    [12, 11]
Name: Available, dtype: object

然后使用 explode() 您可以扩展这些列表并使用 reset_index() 将索引返回到列:

>>> df.groupby('Site')['Available'].unique().explode().reset_index()
  Site Available
0    A         7
1    A         8
2    B        15
3    C        12
4    C        11

否则只需获取两列并删除重复项:

>>> df[['Site', 'Available']].drop_duplicates()
  Site  Available
0    A          7
2    A          8
3    B         15
5    C         12
7    C         11

方法:GroupBy.apply() + Series.drop_duplicates()

(df.groupby('Site')['Available']
   .apply(lambda s: s.drop_duplicates())
   .reset_index(level=1, drop=True)
   .reset_index(name='Unique Available')
)

结果:

  Site  Unique Available
0    A                 7
1    A                 8
2    B                15
3    C                12
4    C                11