【问题标题】:Pandas dataframe get unique value of a column熊猫数据框获取列的唯一值
【发布时间】:2021-06-16 18:58:24
【问题描述】:

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

Site Available Capacity
A 7 20
A 7 20
A 8 20
B 15 35
B 15 35
C 12 25
C 12 25
C 11 25

我想获得每个站点的唯一可用。所需的表格如下:

Site Unique Available
A 7
8
B 15
C 12
11

【问题讨论】:

  • df.drop('Capacity', 1).drop_duplicates()?

标签: python pandas dataframe unique


【解决方案1】:

您可以使用 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

【讨论】:

  • 谢谢 Cimbali。这正是我想要的。我不知道 groupby 命令之后可以使用 'unique'。
【解决方案2】:

方法: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

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 2018-06-16
    • 1970-01-01
    • 2018-08-16
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    相关资源
    最近更新 更多