为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梵蒂冈之花 2022-08-11 20:14:30
我有一个数据帧,我在数据帧名称“压力”中有一列它具有重复值,我想对其进行分类。我有这样的列 在这里输入图像描述pressure0.030.030.032.072.072.073.013.01我尝试过groupby()方法,但无法制作分段列。我认为在熊猫中很容易,任何人都可以在这方面帮助我。我需要这样的输出 在这里输入图像描述Pressue   Segment0.03      10.03      10.03      12.07      22.07      22.07      23.01      33.01      3
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

如果性能很重要,请使用因子分解:


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)


查看完整回答
反对 回复 2022-08-11
?
不负相思意

TA贡献1777条经验 获得超10个赞

使用列中的唯一值创建,并使用相同的标签,然后使用dictpressurereplace


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


查看完整回答
反对 回复 2022-08-11
  • 2 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信