Python 使用pandas对列中的重复值进行分类

Python 使用pandas对列中的重复值进行分类,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个数据框,在数据框名称“Pressure”中有一列,它有重复值,我想对它进行分类。我有这样的专栏 我尝试了groupby()方法,但无法生成段列。我认为这是一个简单的方法在熊猫谁可以帮助我在这方面。 我需要这样的输出 提前感谢使用列压力中的唯一值创建dict,并标记相应的值,然后使用替换 d = {j: i for i,j in enumerate(data["Pressure"].unique(),start=1)} data["Segment"]= data["Pressure"

我有一个数据框,在数据框名称“Pressure”中有一列,它有重复值,我想对它进行分类。我有这样的专栏

我尝试了groupby()方法,但无法生成段列。我认为这是一个简单的方法在熊猫谁可以帮助我在这方面。 我需要这样的输出


提前感谢

使用列
压力中的唯一值创建
dict
,并标记相应的值,然后使用
替换

d = {j: i for i,j in enumerate(data["Pressure"].unique(),start=1)}

data["Segment"]= data["Pressure"].replace(d).astype("int")
print(data)
输出:

Pressure   Segment
0.03      1
0.03      1
0.03      1
2.07      2
2.07      2
2.07      2
3.01      3
3.01      3

使用列
压力
中的唯一值创建
dict
,并标记相应的值,然后使用
replace

d = {j: i for i,j in enumerate(data["Pressure"].unique(),start=1)}

data["Segment"]= data["Pressure"].replace(d).astype("int")
print(data)
输出:

Pressure   Segment
0.03      1
0.03      1
0.03      1
2.07      2
2.07      2
2.07      2
3.01      3
3.01      3
如果性能很重要,请使用:

data["Segment"]= pd.factorize(data["pressure"])[0] + 1
print (data)
   pressure  Segment
0      0.03        1
1      0.03        1
2      0.03        1
3      2.07        2
4      2.07        2
5      2.07        2
6      3.01        3
7      3.01        3
性能

data = pd.DataFrame({'pressure': np.sort(np.random.randint(1000, size=10000)) / 100})

In [312]: %timeit data["pressure"].replace({j: i for i,j in enumerate(data["pressure"].unique(),start=1)}).astype("int")
141 ms ± 3.11 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [313]: %timeit pd.factorize(data["pressure"])[0] + 1
751 µs ± 3.97 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
如果性能很重要,请使用:

data["Segment"]= pd.factorize(data["pressure"])[0] + 1
print (data)
   pressure  Segment
0      0.03        1
1      0.03        1
2      0.03        1
3      2.07        2
4      2.07        2
5      2.07        2
6      3.01        3
7      3.01        3
性能

data = pd.DataFrame({'pressure': np.sort(np.random.randint(1000, size=10000)) / 100})

In [312]: %timeit data["pressure"].replace({j: i for i,j in enumerate(data["pressure"].unique(),start=1)}).astype("int")
141 ms ± 3.11 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [313]: %timeit pd.factorize(data["pressure"])[0] + 1
751 µs ± 3.97 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)