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
我正在尝试获取每个站点的唯一可用值。原始 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